/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v3"; import { safeParse } from "../../lib/schemas.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { BuildStatus, BuildStatus$inboundSchema } from "./buildstatus.js"; import { Region, Region$inboundSchema } from "./region.js"; export type RegionalContainerTags = { containerTag: string; region: Region; }; /** * A build represents a game server artifact and its associated metadata. */ export type Build = { /** * When the build expired */ expiredAt?: Date | undefined; buildTag?: string | null | undefined; /** * @deprecated field: This will be removed in a future release, please migrate away from it as soon as possible. */ regionalContainerTags: Array; /** * The size (in bytes) of the Docker image built by Hathora. */ imageSize: number; status: BuildStatus; /** * When the build was deleted. */ deletedAt: Date | null; /** * When [`RunBuild()`](https://hathora.dev/api#tag/BuildV2/operation/RunBuild) finished executing. */ finishedAt: Date | null; /** * When [`RunBuild()`](https://hathora.dev/api#tag/BuildV2/operation/RunBuild) is called. */ startedAt: Date | null; /** * When [`CreateBuild()`](https://hathora.dev/api#tag/BuildV2/operation/CreateBuild) is called. */ createdAt: Date; createdBy: string; /** * System generated id for a build. Increments by 1. */ buildId: number; /** * System generated unique identifier for an application. */ appId: string; }; /** @internal */ export const RegionalContainerTags$inboundSchema: z.ZodType< RegionalContainerTags, z.ZodTypeDef, unknown > = z.object({ containerTag: z.string(), region: Region$inboundSchema, }); export function regionalContainerTagsFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => RegionalContainerTags$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'RegionalContainerTags' from JSON`, ); } /** @internal */ export const Build$inboundSchema: z.ZodType = z .object({ expiredAt: z.string().datetime({ offset: true }).transform(v => new Date(v)) .optional(), buildTag: z.nullable(z.string()).optional(), regionalContainerTags: z.array( z.lazy(() => RegionalContainerTags$inboundSchema), ), imageSize: z.number().int(), status: BuildStatus$inboundSchema, deletedAt: z.nullable( z.string().datetime({ offset: true }).transform(v => new Date(v)), ), finishedAt: z.nullable( z.string().datetime({ offset: true }).transform(v => new Date(v)), ), startedAt: z.nullable( z.string().datetime({ offset: true }).transform(v => new Date(v)), ), createdAt: z.string().datetime({ offset: true }).transform(v => new Date(v) ), createdBy: z.string(), buildId: z.number().int(), appId: z.string(), }); export function buildFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => Build$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'Build' from JSON`, ); }