/* * 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 { AuthConfiguration, AuthConfiguration$inboundSchema, } from "./authconfiguration.js"; import { Build, Build$inboundSchema } from "./build.js"; import { ContainerPort, ContainerPort$inboundSchema } from "./containerport.js"; import { LoadBalancerConfig, LoadBalancerConfig$inboundSchema, } from "./loadbalancerconfig.js"; import { ProcessAutoscalerConfig, ProcessAutoscalerConfig$inboundSchema, } from "./processautoscalerconfig.js"; import { StaticProcessAllocationConfig, StaticProcessAllocationConfig$inboundSchema, } from "./staticprocessallocationconfig.js"; export type ServiceConfig = { /** * The configuration for the Process Autoscaler for this application. * * @remarks * Autoscaling must be enabled on a per-region basis. * EXPERIMENTAL - This feature is in closed beta. */ processAutoscalerConfig?: ProcessAutoscalerConfig | undefined; loadBalancer?: LoadBalancerConfig | undefined; /** * The headroom configuration for each region. */ staticProcessAllocation: Array; }; export type ApplicationWithLatestDeploymentAndBuildDeprecatedEnv = { value: string; name: string; }; export type Deployment = { /** * Option to shut down processes that have had no new connections or rooms * * @remarks * for five minutes. */ idleTimeoutEnabled: boolean; /** * The environment variable that our process will have access to at runtime. */ env: Array; /** * Governs how many [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) can be scheduled in a process. */ roomsPerProcess: number; /** * Additional ports your server listens on. */ additionalContainerPorts: Array; /** * A container port object represents the transport configruations for how your server will listen. */ defaultContainerPort: ContainerPort; /** * When the deployment was created. */ createdAt: Date; createdBy: string; /** * The amount of memory allocated to your process. */ requestedMemoryMB: number; /** * The number of cores allocated to your process. */ requestedCPU: number; /** * System generated id for a deployment. Increments by 1. */ deploymentId: number; /** * System generated id for a build. Increments by 1. */ buildId: number; /** * System generated unique identifier for an application. */ appId: string; /** * A build represents a game server artifact and its associated metadata. */ build: Build; }; /** * An application object is the top level namespace for the game server. */ export type ApplicationWithLatestDeploymentAndBuildDeprecated = { /** * The email address or token id for the user that deleted the application. */ deletedBy: string | null; /** * When the application was deleted. */ deletedAt: Date | null; /** * When the application was created. */ createdAt: Date; createdBy: string; /** * System generated unique identifier for an organization. Not guaranteed to have a specific format. */ orgId: string; serviceConfig: ServiceConfig | null; /** * Configure [player authentication](https://hathora.dev/docs/backend-integrations/lobbies-and-matchmaking/auth-service) for your application. Use Hathora's built-in auth providers or use your own [custom authentication](https://hathora.dev/docs/lobbies-and-matchmaking/auth-service#custom-auth-provider). */ authConfiguration: AuthConfiguration; /** * Secret that is used for identity and access management. */ appSecret: string; /** * System generated unique identifier for an application. */ appId: string; /** * Readable name for an application. Must be unique within an organization. */ appName: string; deployment?: Deployment | undefined; }; /** @internal */ export const ServiceConfig$inboundSchema: z.ZodType< ServiceConfig, z.ZodTypeDef, unknown > = z.object({ processAutoscalerConfig: ProcessAutoscalerConfig$inboundSchema.optional(), loadBalancer: LoadBalancerConfig$inboundSchema.optional(), staticProcessAllocation: z.array(StaticProcessAllocationConfig$inboundSchema), }); export function serviceConfigFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => ServiceConfig$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ServiceConfig' from JSON`, ); } /** @internal */ export const ApplicationWithLatestDeploymentAndBuildDeprecatedEnv$inboundSchema: z.ZodType< ApplicationWithLatestDeploymentAndBuildDeprecatedEnv, z.ZodTypeDef, unknown > = z.object({ value: z.string(), name: z.string(), }); export function applicationWithLatestDeploymentAndBuildDeprecatedEnvFromJSON( jsonString: string, ): SafeParseResult< ApplicationWithLatestDeploymentAndBuildDeprecatedEnv, SDKValidationError > { return safeParse( jsonString, (x) => ApplicationWithLatestDeploymentAndBuildDeprecatedEnv$inboundSchema.parse( JSON.parse(x), ), `Failed to parse 'ApplicationWithLatestDeploymentAndBuildDeprecatedEnv' from JSON`, ); } /** @internal */ export const Deployment$inboundSchema: z.ZodType< Deployment, z.ZodTypeDef, unknown > = z.object({ idleTimeoutEnabled: z.boolean(), env: z.array( z.lazy(() => ApplicationWithLatestDeploymentAndBuildDeprecatedEnv$inboundSchema ), ), roomsPerProcess: z.number().int(), additionalContainerPorts: z.array(ContainerPort$inboundSchema), defaultContainerPort: ContainerPort$inboundSchema, createdAt: z.string().datetime({ offset: true }).transform(v => new Date(v)), createdBy: z.string(), requestedMemoryMB: z.number(), requestedCPU: z.number(), deploymentId: z.number().int(), buildId: z.number().int(), appId: z.string(), build: Build$inboundSchema, }); export function deploymentFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => Deployment$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'Deployment' from JSON`, ); } /** @internal */ export const ApplicationWithLatestDeploymentAndBuildDeprecated$inboundSchema: z.ZodType< ApplicationWithLatestDeploymentAndBuildDeprecated, z.ZodTypeDef, unknown > = z.object({ deletedBy: z.nullable(z.string()), deletedAt: 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(), orgId: z.string(), serviceConfig: z.nullable(z.lazy(() => ServiceConfig$inboundSchema)), authConfiguration: AuthConfiguration$inboundSchema, appSecret: z.string(), appId: z.string(), appName: z.string(), deployment: z.lazy(() => Deployment$inboundSchema).optional(), }); export function applicationWithLatestDeploymentAndBuildDeprecatedFromJSON( jsonString: string, ): SafeParseResult< ApplicationWithLatestDeploymentAndBuildDeprecated, SDKValidationError > { return safeParse( jsonString, (x) => ApplicationWithLatestDeploymentAndBuildDeprecated$inboundSchema.parse( JSON.parse(x), ), `Failed to parse 'ApplicationWithLatestDeploymentAndBuildDeprecated' from JSON`, ); }