From b4253c32a19109fae8d921bfd8943789a08d958c Mon Sep 17 00:00:00 2001 From: eddiechayes Date: Fri, 29 Mar 2024 10:48:49 -0700 Subject: [PATCH] pseo: add hathora --- .../from-custom-request_hathora.dev.yaml | 2005 +++++++ sdks/db/category-cache.yaml | 1 + sdks/db/custom-request-last-fetched.yaml | 1 + sdks/db/custom-request-specs/hathora.dev.yaml | 4646 ++++++++++++++++ .../fixed-specs-cache/hathora-fixed-spec.yaml | 4664 ++++++++++++++++ sdks/db/fixed-specs/hathora-fixed-spec.yaml | 4695 +++++++++++++++++ .../hathora.json | 3 + .../hathora/openapi.yaml | 4646 ++++++++++++++++ .../hathora.dev.yaml | 25 + sdks/db/progress/hathora-progress.yaml | 269 + .../from-custom-request_hathora.dev.json | 2995 +++++++++++ .../from-custom-request_hathora.dev.json | 29 + sdks/publish.yaml | 16 + sdks/src/collect-from-custom-requests.ts | 4 + 14 files changed, 23999 insertions(+) create mode 100644 sdks/db/cached-method-objects/from-custom-request_hathora.dev.yaml create mode 100644 sdks/db/custom-request-specs/hathora.dev.yaml create mode 100644 sdks/db/fixed-specs-cache/hathora-fixed-spec.yaml create mode 100644 sdks/db/fixed-specs/hathora-fixed-spec.yaml create mode 100644 sdks/db/generate-repository-description-cache/hathora.json create mode 100644 sdks/db/intermediate-fixed-specs/hathora/openapi.yaml create mode 100644 sdks/db/processed-custom-request-cache/hathora.dev.yaml create mode 100644 sdks/db/progress/hathora-progress.yaml create mode 100644 sdks/db/published/from-custom-request_hathora.dev.json create mode 100644 sdks/db/spec-data/from-custom-request_hathora.dev.json diff --git a/sdks/db/cached-method-objects/from-custom-request_hathora.dev.yaml b/sdks/db/cached-method-objects/from-custom-request_hathora.dev.yaml new file mode 100644 index 0000000000..153e61b9fb --- /dev/null +++ b/sdks/db/cached-method-objects/from-custom-request_hathora.dev.yaml @@ -0,0 +1,2005 @@ +hash: f2ed826502ece19e1168d68b0612d6ffcf08dbfd2f659bd6d516e99872c18cd9 +methodObjects: + - url: /apps/v1/list + method: getAppList + httpMethod: get + tag: AppV1 + typeScriptTag: appV1 + description: >- + Returns an unsorted list of your organization’s + [applications](https://hathora.dev/docs/concepts/hathora-entities#application). + An application is uniquely identified by an `appId`. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /apps/v1/create + method: createNewApplication + httpMethod: post + tag: AppV1 + typeScriptTag: appV1 + description: >- + Create a new + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + parameters: + - name: authConfiguration + schema: object + required: true + description: '' + - name: appName + schema: string + required: true + description: '' + example: minecraft + responses: + - statusCode: '201' + description: An application object is the top level namespace for the game server. + - statusCode: '401' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /apps/v1/update/{appId} + method: updateApplicationData + httpMethod: post + tag: AppV1 + typeScriptTag: appV1 + description: >- + Update data for an existing + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: authConfiguration + schema: object + required: true + description: '' + - name: appName + schema: string + required: true + description: '' + example: minecraft + responses: + - statusCode: '200' + description: An application object is the top level namespace for the game server. + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /apps/v1/info/{appId} + method: getAppInfo + httpMethod: get + tag: AppV1 + typeScriptTag: appV1 + description: >- + Get details for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + responses: + - statusCode: '200' + description: An application object is the top level namespace for the game server. + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /apps/v1/delete/{appId} + method: deleteApplicationById + httpMethod: delete + tag: AppV1 + typeScriptTag: appV1 + description: >- + Delete an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. Your organization will lose access to this application. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + responses: + - statusCode: '204' + description: No content + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /auth/v1/{appId}/login/anonymous + method: generatePlayerToken + httpMethod: post + tag: AuthV1 + typeScriptTag: authV1 + description: Returns a unique player token for an anonymous user. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /auth/v1/{appId}/login/nickname + method: generateUniquePlayerToken + httpMethod: post + tag: AuthV1 + typeScriptTag: authV1 + description: Returns a unique player token with a specified nickname for a user. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: nickname + schema: string + required: true + description: '' + example: squiddytwoshoes + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /auth/v1/{appId}/login/google + method: getUniquePlayerToken + httpMethod: post + tag: AuthV1 + typeScriptTag: authV1 + description: Returns a unique player token using a Google-signed OIDC `idToken`. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: idToken + schema: string + required: true + description: '' + example: >- + eyJhbGciOiJSUzI1NiIsImtpZCI6ImZkNDhhNzUxMzhkOWQ0OGYwYWE2MzVlZjU2OWM0ZTE5NmY3YWU4ZDYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXpwIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTE0NTQyMzMwNzI3MTU2MTMzNzc2IiwiZW1haWwiOiJocGFdkeivmeuzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdF9oYXNoIjoidno1NGhhdTNxbnVR + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /billing/v1/balance + method: getBalance + httpMethod: get + tag: BillingV1 + typeScriptTag: billingV1 + description: '' + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /billing/v1/paymentmethod + method: getPaymentMethod + httpMethod: get + tag: BillingV1 + typeScriptTag: billingV1 + description: '' + parameters: [] + responses: + - statusCode: '200' + description: Make all properties in T optional + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /billing/v1/customerportalurl + method: createCustomerPortalUrl + httpMethod: post + tag: BillingV1 + typeScriptTag: billingV1 + description: '' + parameters: + - name: returnUrl + schema: string + required: true + description: '' + example: RETURNURL + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /billing/v1/invoices + method: listInvoices + httpMethod: get + tag: BillingV1 + typeScriptTag: billingV1 + description: '' + parameters: [] + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /builds/v1/{appId}/list + method: getApplicationBuilds + httpMethod: get + tag: BuildV1 + typeScriptTag: buildV1 + description: >- + Returns an array of + [builds](https://hathora.dev/docs/concepts/hathora-entities#build) for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /builds/v1/{appId}/info/{buildId} + method: getApplicationInfo + httpMethod: get + tag: BuildV1 + typeScriptTag: buildV1 + description: >- + Get details for a + [build](https://hathora.dev/docs/concepts/hathora-entities#build). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: buildId + schema: integer + required: true + description: '' + example: 1 + responses: + - statusCode: '200' + description: A build represents a game server artifact and its associated metadata. + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /builds/v1/{appId}/create + method: createBuild + httpMethod: post + tag: BuildV1 + typeScriptTag: buildV1 + description: >- + Creates a new + [build](https://hathora.dev/docs/concepts/hathora-entities#build). + Responds with a `buildId` that you must pass to + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) to + build the game server artifact. You can optionally pass in a `buildTag` to + associate an external version with a build. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: buildTag + schema: string + description: '' + example: 0.1.14-14c793 + responses: + - statusCode: '201' + description: A build represents a game server artifact and its associated metadata. + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /builds/v1/{appId}/run/{buildId} + method: buildServerArtifact + httpMethod: post + tag: BuildV1 + typeScriptTag: buildV1 + description: >- + Builds a game server artifact from a tarball you provide. Pass in the + `buildId` generated from + [`CreateBuild()`](https://hathora.dev/api#tag/BuildV1/operation/CreateBuild). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: buildId + schema: integer + required: true + description: '' + example: 1 + - name: file + schema: string + required: true + description: '' + example: FILE + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /builds/v1/{appId}/delete/{buildId} + method: deleteBuildById + httpMethod: delete + tag: BuildV1 + typeScriptTag: buildV1 + description: >- + Delete a + [build](https://hathora.dev/docs/concepts/hathora-entities#build). All + associated metadata is deleted. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: buildId + schema: integer + required: true + description: '' + example: 1 + responses: + - statusCode: '204' + description: No content + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /deployments/v1/{appId}/list + method: listDeploymentsByAppId + httpMethod: get + tag: DeploymentV1 + typeScriptTag: deploymentV1 + description: >- + Returns an array of + [deployments](https://hathora.dev/docs/concepts/hathora-entities#deployment) + for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /deployments/v1/{appId}/latest + method: getLatestDeploymentByAppId + httpMethod: get + tag: DeploymentV1 + typeScriptTag: deploymentV1 + description: >- + Get the latest + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) + for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + responses: + - statusCode: '200' + description: >- + Deployment is a versioned configuration for a build that describes + runtime behavior. + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /deployments/v1/{appId}/info/{deploymentId} + method: getInfo + httpMethod: get + tag: DeploymentV1 + typeScriptTag: deploymentV1 + description: >- + Get details for a + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: deploymentId + schema: integer + required: true + description: '' + example: 1 + responses: + - statusCode: '200' + description: >- + Deployment is a versioned configuration for a build that describes + runtime behavior. + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /deployments/v1/{appId}/create/{buildId} + method: createNewDeployment + httpMethod: post + tag: DeploymentV1 + typeScriptTag: deploymentV1 + description: >- + Create a new + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment). + Creating a new deployment means all new rooms created will use the latest + deployment configuration, but existing games in progress will not be + affected. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: buildId + schema: integer + required: true + description: '' + example: 1 + - name: idleTimeoutEnabled + schema: boolean + required: false + description: '' + default: 'true' + - name: env + schema: array + required: true + description: '' + - name: roomsPerProcess + schema: integer + required: true + description: '' + example: 3 + - name: planName + schema: string + required: true + description: '' + example: tiny + - name: additionalContainerPorts + schema: array + required: false + description: '' + - name: transportType + schema: string + required: true + description: '' + example: TRANSPORTTYPE + - name: containerPort + schema: integer + required: true + description: '' + example: 4000 + responses: + - statusCode: '201' + description: >- + Deployment is a versioned configuration for a build that describes + runtime behavior. + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /discovery/v1/ping + method: getEndpoints + httpMethod: get + tag: DiscoveryV1 + typeScriptTag: discoveryV1 + description: >- + Returns an array of all regions with a host and port that a client can + directly ping. Open a websocket connection to `wss://:/ws` and + send a packet. To calculate ping, measure the time it takes to get an echo + packet back. + parameters: [] + responses: + - statusCode: '200' + description: '' + - url: /lobby/v1/{appId}/create/private + method: createPrivateLobby + httpMethod: post + tag: LobbyV1 + typeScriptTag: lobbyV1 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: region + schema: string + required: false + description: '' + - name: local + schema: boolean + required: false + description: '' + default: false + responses: + - statusCode: '200' + description: >- + Unique identifier to a game session or match. Use the default system + generated ID or overwrite it with your own. + + Note: error will be returned if `roomId` is not globally unique. + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '402' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '429' + description: '' + - statusCode: '500' + description: '' + - url: /lobby/v1/{appId}/create/public + method: createPublicLobby + httpMethod: post + tag: LobbyV1 + typeScriptTag: lobbyV1 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: region + schema: string + required: false + description: '' + - name: local + schema: boolean + required: false + description: '' + default: false + responses: + - statusCode: '200' + description: >- + Unique identifier to a game session or match. Use the default system + generated ID or overwrite it with your own. + + Note: error will be returned if `roomId` is not globally unique. + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '402' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '429' + description: '' + - statusCode: '500' + description: '' + - url: /lobby/v1/{appId}/list + method: listLobbiesByAppId + httpMethod: get + tag: LobbyV1 + typeScriptTag: lobbyV1 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: local + schema: boolean + required: false + description: '' + default: false + - name: region + schema: string + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '404' + description: '' + - url: /lobby/v2/{appId}/create/private + method: createPrivateLobby + httpMethod: post + tag: LobbyV2 + typeScriptTag: lobbyV2 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: false + description: '' + example: 2swovpy1fnunu + - name: initialConfig + schema: object + required: true + description: '' + - name: region + schema: string + required: true + description: '' + example: REGION + responses: + - statusCode: '201' + description: A lobby object allows you to store and manage metadata for your rooms. + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '402' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '429' + description: '' + - statusCode: '500' + description: '' + - url: /lobby/v2/{appId}/create/public + method: createPublicLobby + httpMethod: post + tag: LobbyV2 + typeScriptTag: lobbyV2 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: false + description: '' + example: 2swovpy1fnunu + - name: initialConfig + schema: object + required: true + description: '' + - name: region + schema: string + required: true + description: '' + example: REGION + responses: + - statusCode: '201' + description: A lobby object allows you to store and manage metadata for your rooms. + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '402' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '429' + description: '' + - statusCode: '500' + description: '' + - url: /lobby/v2/{appId}/create/local + method: createLocalLobby + httpMethod: post + tag: LobbyV2 + typeScriptTag: lobbyV2 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: false + description: '' + example: 2swovpy1fnunu + - name: initialConfig + schema: object + required: true + description: '' + - name: region + schema: string + required: true + description: '' + example: REGION + responses: + - statusCode: '201' + description: A lobby object allows you to store and manage metadata for your rooms. + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '402' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '429' + description: '' + - statusCode: '500' + description: '' + - url: /lobby/v2/{appId}/create + method: createLobby + httpMethod: post + tag: LobbyV2 + typeScriptTag: lobbyV2 + description: >- + Create a new lobby for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + A lobby object is a wrapper around a + [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. + With a lobby, you get additional functionality like configuring the + visibility of the room, managing the state of a match, and retrieving a + list of public lobbies to display to players. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: false + description: '' + example: 2swovpy1fnunu + - name: visibility + schema: string + required: true + description: '' + example: private + - name: initialConfig + schema: object + required: true + description: '' + - name: region + schema: string + required: true + description: '' + example: REGION + responses: + - statusCode: '201' + description: A lobby object allows you to store and manage metadata for your rooms. + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '402' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '429' + description: '' + - statusCode: '500' + description: '' + - url: /lobby/v2/{appId}/list/public + method: listPublicLobbies + httpMethod: get + tag: LobbyV2 + typeScriptTag: lobbyV2 + description: >- + Get all active lobbies for a an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter by optionally passing in a `region`. Use this endpoint to display + all public lobbies that a player can join in the game client. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: region + schema: string + required: false + description: >- + Region to filter by. If omitted, active public lobbies in all regions + will be returned. + responses: + - statusCode: '200' + description: '' + - url: /lobby/v2/{appId}/info/{roomId} + method: getLobbyDetails + httpMethod: get + tag: LobbyV2 + typeScriptTag: lobbyV2 + description: Get details for a lobby. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + responses: + - statusCode: '200' + description: A lobby object allows you to store and manage metadata for your rooms. + - statusCode: '404' + description: '' + - url: /lobby/v2/{appId}/setState/{roomId} + method: setLobbyState + httpMethod: post + tag: LobbyV2 + typeScriptTag: lobbyV2 + description: >- + Set the state of a lobby. State is intended to be set by the server and + must be smaller than 1MB. Use this endpoint to store match data like live + player count to enforce max number of clients or persist end-game data + (i.e. winner or final scores). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + - name: state + schema: object + required: true + description: '' + responses: + - statusCode: '200' + description: A lobby object allows you to store and manage metadata for your rooms. + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - url: /lobby/v3/{appId}/create + method: createNewLobby + httpMethod: post + tag: LobbyV3 + typeScriptTag: lobbyV3 + description: >- + Create a new lobby for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + A lobby object is a wrapper around a + [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. + With a lobby, you get additional functionality like configuring the + visibility of the room, managing the state of a match, and retrieving a + list of public lobbies to display to players. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: shortCode + schema: string + required: false + description: '' + example: LFG4 + - name: roomId + schema: string + required: false + description: '' + example: 2swovpy1fnunu + - name: visibility + schema: string + required: true + description: '' + example: private + - name: roomConfig + schema: string + required: false + description: '' + example: '{"name":"my-room"}' + - name: region + schema: string + required: true + description: '' + example: REGION + responses: + - statusCode: '201' + description: A lobby object allows you to store and manage metadata for your rooms. + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '402' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '429' + description: '' + - statusCode: '500' + description: '' + - url: /lobby/v3/{appId}/list/public + method: listPublicLobbies + httpMethod: get + tag: LobbyV3 + typeScriptTag: lobbyV3 + description: >- + Get all active lobbies for a given + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. Use this endpoint to + display all public lobbies that a player can join in the game client. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: region + schema: string + required: false + description: If omitted, active public lobbies in all regions will be returned. + responses: + - statusCode: '200' + description: '' + - url: /lobby/v3/{appId}/info/roomid/{roomId} + method: getLobbyDetails + httpMethod: get + tag: LobbyV3 + typeScriptTag: lobbyV3 + description: Get details for a lobby. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + responses: + - statusCode: '200' + description: A lobby object allows you to store and manage metadata for your rooms. + - statusCode: '404' + description: '' + - url: /lobby/v3/{appId}/info/shortcode/{shortCode} + method: getInfoByShortCode + httpMethod: get + tag: LobbyV3 + typeScriptTag: lobbyV3 + description: >- + Get details for a lobby. If 2 or more lobbies have the same `shortCode`, + then the most recently created lobby will be returned. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: shortCode + schema: string + required: true + description: '' + example: LFG4 + responses: + - statusCode: '200' + description: A lobby object allows you to store and manage metadata for your rooms. + - statusCode: '404' + description: '' + - url: /logs/v1/{appId}/all + method: getAllLogs + httpMethod: get + tag: LogV1 + typeScriptTag: logV1 + description: >- + Returns a stream of logs for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: follow + schema: boolean + required: false + description: '' + default: 'false' + - name: tailLines + schema: integer + required: false + description: '' + example: 100 + default: '100' + - name: region + schema: string + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /logs/v1/{appId}/process/{processId} + method: streamLogsForProcess + httpMethod: get + tag: LogV1 + typeScriptTag: logV1 + description: >- + Returns a stream of logs for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + using `appId` and `processId`. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: processId + schema: string + required: true + description: '' + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + - name: follow + schema: boolean + required: false + description: '' + default: 'false' + - name: tailLines + schema: integer + required: false + description: '' + example: 100 + default: '100' + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '410' + description: '' + - statusCode: '500' + description: '' + - url: /logs/v1/{appId}/process/{processId}/download + method: downloadLogForProcess + httpMethod: get + tag: LogV1 + typeScriptTag: logV1 + description: Download entire log file for a stopped process. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: processId + schema: string + required: true + description: '' + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + responses: + - statusCode: '200' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '410' + description: '' + - url: /logs/v1/{appId}/deployment/{deploymentId} + method: getLogStream + httpMethod: get + tag: LogV1 + typeScriptTag: logV1 + description: >- + Returns a stream of logs for a + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) + using `appId` and `deploymentId`. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: deploymentId + schema: integer + required: true + description: '' + example: 1 + - name: follow + schema: boolean + required: false + description: '' + default: 'false' + - name: tailLines + schema: integer + required: false + description: '' + example: 100 + default: '100' + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /management/v1/sendverificationemail + method: sendVerificationEmail + httpMethod: post + tag: ManagementV1 + typeScriptTag: managementV1 + description: '' + parameters: + - name: userId + schema: string + required: true + description: '' + example: USERID + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '500' + description: '' + - url: /metrics/v1/{appId}/process/{processId} + method: getProcessMetrics + httpMethod: get + tag: MetricsV1 + typeScriptTag: metricsV1 + description: >- + Get metrics for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + using `appId` and `processId`. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: processId + schema: string + required: true + description: '' + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + - name: metrics + schema: array + required: false + description: Available metrics to query over time. + default: + - cpu + - memory + - rate_egress + - name: end + schema: number + required: false + description: Unix timestamp. Default is current time. + - name: start + schema: number + required: false + description: Unix timestamp. Default is -1 hour from `end`. + - name: step + schema: integer + required: false + description: '' + default: '60' + responses: + - statusCode: '200' + description: Construct a type with a set of properties K of type T + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - statusCode: '500' + description: '' + - url: /processes/v1/{appId}/list/running + method: listRunningProcesses + httpMethod: get + tag: ProcessesV1 + typeScriptTag: processesV1 + description: >- + Retrieve 10 most recently started + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: region + schema: string + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /processes/v1/{appId}/list/stopped + method: getRecentlyStoppedProcesses + httpMethod: get + tag: ProcessesV1 + typeScriptTag: processesV1 + description: >- + Retrieve 10 most recently stopped + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: region + schema: string + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /processes/v1/{appId}/info/{processId} + method: getProcessInfo + httpMethod: get + tag: ProcessesV1 + typeScriptTag: processesV1 + description: >- + Get details for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: processId + schema: string + required: true + description: '' + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + responses: + - statusCode: '200' + description: >- + A process object represents a runtime instance of your game server and + its metadata. + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /processes/v2/{appId}/info/{processId} + method: getProcessInfo + httpMethod: get + tag: ProcessesV2 + typeScriptTag: processesV2 + description: >- + Get details for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: processId + schema: string + required: true + description: '' + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /processes/v2/{appId}/list/latest + method: getLatestProcessesList + httpMethod: get + tag: ProcessesV2 + typeScriptTag: processesV2 + description: >- + Retrieve the 10 most recent + [processes](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `status` or `region`. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: status + schema: array + required: false + description: '' + - name: region + schema: array + required: false + description: '' + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /processes/v2/{appId}/stop/{processId} + method: stopProcessById + httpMethod: post + tag: ProcessesV2 + typeScriptTag: processesV2 + description: >- + Stops a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + immediately. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: processId + schema: string + required: true + description: '' + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + responses: + - statusCode: '204' + description: No content + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /processes/v2/{appId}/create/{region} + method: createProcessWithoutRoom + httpMethod: post + tag: ProcessesV2 + typeScriptTag: processesV2 + description: >- + Creates a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + without a room. Use this to pre-allocate processes ahead of time so that + subsequent room assignment via + [CreateRoom()](https://hathora.dev/api#tag/RoomV2/operation/CreateRoom) + can be instant. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: region + schema: string + required: true + description: '' + example: REGION + responses: + - statusCode: '201' + description: '' + - statusCode: '401' + description: '' + - statusCode: '402' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /rooms/v1/{appId}/create + method: createRoom + httpMethod: post + tag: RoomV1 + typeScriptTag: roomV1 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: false + description: '' + example: 2swovpy1fnunu + - name: roomConfig + schema: string + required: false + description: '' + example: '{"name":"my-room"}' + - name: region + schema: string + required: true + description: '' + example: REGION + responses: + - statusCode: '201' + description: >- + Unique identifier to a game session or match. Use the default system + generated ID or overwrite it with your own. + + Note: error will be returned if `roomId` is not globally unique. + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '402' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /rooms/v1/{appId}/info/{roomId} + method: getRoomInfo + httpMethod: get + tag: RoomV1 + typeScriptTag: roomV1 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + responses: + - statusCode: '200' + description: A room object represents a game session or match. + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /rooms/v1/{appId}/list/{processId}/active + method: getActiveRooms + httpMethod: get + tag: RoomV1 + typeScriptTag: roomV1 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: processId + schema: string + required: true + description: '' + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /rooms/v1/{appId}/list/{processId}/inactive + method: getInactiveRooms + httpMethod: get + tag: RoomV1 + typeScriptTag: roomV1 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: processId + schema: string + required: true + description: '' + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /rooms/v1/{appId}/destroy/{roomId} + method: destroyRoom + httpMethod: post + tag: RoomV1 + typeScriptTag: roomV1 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + responses: + - statusCode: '204' + description: No content + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /rooms/v1/{appId}/suspend/{roomId} + method: suspendRoom + httpMethod: post + tag: RoomV1 + typeScriptTag: roomV1 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + responses: + - statusCode: '204' + description: No content + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /rooms/v1/{appId}/connectioninfo/{roomId} + method: getConnectionInfo + httpMethod: get + tag: RoomV1 + typeScriptTag: roomV1 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + responses: + - statusCode: '200' + description: Connection information to the default port. + - statusCode: '400' + description: '' + - statusCode: '402' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /rooms/v2/{appId}/create + method: createRoom + httpMethod: post + tag: RoomV2 + typeScriptTag: roomV2 + description: >- + Create a new + [room](https://hathora.dev/docs/concepts/hathora-entities#room) for an + existing + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Poll the + [`GetConnectionInfo()`](https://hathora.dev/api#tag/RoomV2/operation/GetConnectionInfo) + endpoint to get connection details for an active room. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: false + description: '' + example: 2swovpy1fnunu + - name: roomConfig + schema: string + required: false + description: '' + example: '{"name":"my-room"}' + - name: region + schema: string + required: true + description: '' + example: REGION + responses: + - statusCode: '201' + description: '' + - statusCode: '400' + description: '' + - statusCode: '401' + description: '' + - statusCode: '402' + description: '' + - statusCode: '403' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /rooms/v2/{appId}/info/{roomId} + method: getAllocationData + httpMethod: get + tag: RoomV2 + typeScriptTag: roomV2 + description: >- + Retreive current and historical allocation data for a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + responses: + - statusCode: '200' + description: A room object represents a game session or match. + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /rooms/v2/{appId}/list/{processId}/active + method: listActiveRooms + httpMethod: get + tag: RoomV2 + typeScriptTag: roomV2 + description: >- + Get all active + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a + given + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: processId + schema: string + required: true + description: '' + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /rooms/v2/{appId}/list/{processId}/inactive + method: listInactiveRooms + httpMethod: get + tag: RoomV2 + typeScriptTag: roomV2 + description: >- + Get all inactive + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a + given + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: processId + schema: string + required: true + description: '' + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /rooms/v2/{appId}/destroy/{roomId} + method: destroyRoomAllocation + httpMethod: post + tag: RoomV2 + typeScriptTag: roomV2 + description: >- + Destroy a [room](https://hathora.dev/docs/concepts/hathora-entities#room). + All associated metadata is deleted. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + responses: + - statusCode: '204' + description: No content + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /rooms/v2/{appId}/suspend/{roomId} + method: suspendRoomAllocation + httpMethod: post + tag: RoomV2 + typeScriptTag: roomV2 + description: >- + Suspend a [room](https://hathora.dev/docs/concepts/hathora-entities#room). + The room is unallocated from the process but can be rescheduled later + using the same `roomId`. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + responses: + - statusCode: '204' + description: No content + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /rooms/v2/{appId}/connectioninfo/{roomId} + method: getConnectionInfo + httpMethod: get + tag: RoomV2 + typeScriptTag: roomV2 + description: >- + Poll this endpoint to get connection details to a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). Clients + can call this endpoint without authentication. + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + responses: + - statusCode: '200' + description: Connection information for the default and additional ports. + - statusCode: '400' + description: '' + - statusCode: '402' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /rooms/v2/{appId}/update/{roomId} + method: updateRoomAllocation + httpMethod: post + tag: RoomV2 + typeScriptTag: roomV2 + description: '' + parameters: + - name: appId + schema: string + required: true + description: '' + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + - name: roomId + schema: string + required: true + description: '' + example: 2swovpy1fnunu + - name: roomConfig + schema: string + required: true + description: '' + example: '{"name":"my-room"}' + responses: + - statusCode: '204' + description: No content + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '500' + description: '' + - url: /tokens/v1/orgs/{orgId} + method: listOrgTokens + httpMethod: get + tag: OrgTokensV1 + typeScriptTag: orgTokensV1 + description: List all organization tokens for a given org. + parameters: + - name: orgId + schema: string + required: true + description: '' + example: org-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - url: /tokens/v1/orgs/{orgId}/create + method: createNewOrgToken + httpMethod: post + tag: OrgTokensV1 + typeScriptTag: orgTokensV1 + description: Create a new organization token. + parameters: + - name: orgId + schema: string + required: true + description: '' + example: org-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + - name: name + schema: string + required: true + description: '' + example: ci-token + responses: + - statusCode: '201' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' + - statusCode: '422' + description: '' + - url: /tokens/v1/orgs/{orgId}/tokens/{orgTokenId}/revoke + method: revokeOrgToken + httpMethod: post + tag: OrgTokensV1 + typeScriptTag: orgTokensV1 + description: Revoke an organization token. + parameters: + - name: orgId + schema: string + required: true + description: '' + example: org-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + - name: orgTokenId + schema: string + required: true + description: '' + example: org-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + responses: + - statusCode: '200' + description: '' + - statusCode: '401' + description: '' + - statusCode: '404' + description: '' +numberOfSchemas: 104 +apiDescription: >- + Welcome to the Hathora Cloud API documentation! Learn how to use the Hathora + Cloud APIs to build and scale your game servers globally. diff --git a/sdks/db/category-cache.yaml b/sdks/db/category-cache.yaml index e6e4f9896f..b08595c1e5 100644 --- a/sdks/db/category-cache.yaml +++ b/sdks/db/category-cache.yaml @@ -270,3 +270,4 @@ apis: Aeternity Foundation-undefined: Finance Clerk-Backend: Developer Tools LogisticsOS-undefined: AI Tools + Hathora-undefined: Gaming diff --git a/sdks/db/custom-request-last-fetched.yaml b/sdks/db/custom-request-last-fetched.yaml index 82d5097ce7..f99eaf5d00 100644 --- a/sdks/db/custom-request-last-fetched.yaml +++ b/sdks/db/custom-request-last-fetched.yaml @@ -250,3 +250,4 @@ lastUpdated: aeternity.com: 2024-03-29T00:10:32.382Z clerk.com_Backend: 2024-03-29T17:11:35.954Z logisticsos.com: 2024-03-29T17:31:17.971Z + hathora.dev: 2024-03-29T17:41:04.731Z diff --git a/sdks/db/custom-request-specs/hathora.dev.yaml b/sdks/db/custom-request-specs/hathora.dev.yaml new file mode 100644 index 0000000000..3934b9c47c --- /dev/null +++ b/sdks/db/custom-request-specs/hathora.dev.yaml @@ -0,0 +1,4646 @@ +components: + examples: {} + headers: {} + parameters: {} + requestBodies: {} + responses: {} + schemas: + AppName: + type: string + example: minecraft + description: Readable name for an application. Must be unique within an organization. + maxLength: 64 + pattern: ^[a-z0-9-]+$ + AppId: + type: string + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + description: System generated unique identifier for an application. + Record_string.never_: + properties: {} + type: object + description: Construct a type with a set of properties K of type T + AuthConfiguration: + properties: + google: + properties: + clientId: + type: string + description: >- + A Google generated token representing the developer's + credentials for [Google's API + Console](https://console.cloud.google.com/apis/dashboard?pli=1&project=discourse-login-388921). + Learn how to get a `clientId` + [here](https://developers.google.com/identity/gsi/web/guides/get-google-api-clientid). + required: + - clientId + type: object + description: Enable google auth for your application. + nickname: + $ref: '#/components/schemas/Record_string.never_' + description: Enable nickname auth for your application. + anonymous: + $ref: '#/components/schemas/Record_string.never_' + description: Enable anonymous auth for your application. + type: object + description: >- + Configure [player + authentication](https://hathora.dev/docs/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). + OrgId: + type: string + example: org-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + description: >- + System generated unique identifier for an organization. Not guaranteed + to have a specific format. + Application: + properties: + deletedBy: + type: string + nullable: true + description: UserId or email address for the user that deleted the application. + example: google-oauth2|107030234048588177467 + deletedAt: + type: string + format: date-time + nullable: true + description: When the application was deleted. + createdAt: + type: string + format: date-time + description: When the application was created. + createdBy: + type: string + description: UserId or email address for the user that created the application. + example: google-oauth2|107030234048588177467 + orgId: + $ref: '#/components/schemas/OrgId' + authConfiguration: + $ref: '#/components/schemas/AuthConfiguration' + description: >- + Used to authenticate player requests. Use your own authentication or + Hathora's Auth Client. + appSecret: + type: string + description: Secret that is used for identity and access management. + example: secret-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + appId: + $ref: '#/components/schemas/AppId' + appName: + $ref: '#/components/schemas/AppName' + required: + - deletedBy + - deletedAt + - createdAt + - createdBy + - orgId + - authConfiguration + - appSecret + - appId + - appName + type: object + description: An application object is the top level namespace for the game server. + BuildId: + type: integer + format: int32 + example: 1 + description: System generated id for a build. Increments by 1. + DeploymentId: + type: integer + format: int32 + example: 1 + description: System generated id for a deployment. Increments by 1. + TransportType: + type: string + enum: + - tcp + - udp + - tls + description: >- + Transport type specifies the underlying communication protocol to the + exposed port. + ContainerPort: + properties: + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: integer + format: int32 + example: 8000 + minimum: 1 + maximum: 65535 + name: + type: string + description: Readable name for the port. + example: default + minLength: 1 + maxLength: 100 + pattern: ^[a-z][a-z0-9-]*$ + required: + - transportType + - port + - name + type: object + description: >- + A container port object represents the transport configruations for how + your server will listen. + PlanName: + type: string + enum: + - tiny + - small + - medium + - large + example: tiny + description: >- + A plan defines how much CPU and memory is required to run an instance of + your game server. + + + `tiny`: shared core, 1gb memory + + + `small`: 1 core, 2gb memory + + + `medium`: 2 core, 4gb memory + + + `large`: 4 core, 8gb memory + NumRoomsPerProcess: + type: integer + format: int32 + example: 3 + description: >- + Governs how many + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) can be + scheduled in a process. + minimum: 1 + maximum: 10000 + Deployment: + properties: + idleTimeoutEnabled: + type: boolean + description: >- + Option to shut down processes that have had no new connections or + rooms + + for five minutes. + default: 'true' + env: + items: + properties: + value: + type: string + example: 'TRUE' + maxLength: 5000 + name: + type: string + example: EULA + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + required: + - value + - name + type: object + type: array + description: >- + The environment variable that our process will have access to at + runtime. + maxItems: 100 + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + planName: + $ref: '#/components/schemas/PlanName' + additionalContainerPorts: + items: + $ref: '#/components/schemas/ContainerPort' + type: array + description: Additional ports your server listens on. + example: + transportType: tcp + port: 4000 + name: debug + maxItems: 2 + defaultContainerPort: + $ref: '#/components/schemas/ContainerPort' + description: Describes the primary port your process listens on. + transportType: + type: string + enum: + - tcp + - udp + - tls + deprecated: true + containerPort: + type: number + format: double + deprecated: true + createdAt: + type: string + format: date-time + description: When the deployment was created. + createdBy: + type: string + description: UserId or email address for the user that created the deployment. + example: google-oauth2|107030234048588177467 + requestedMemoryMB: + type: integer + format: int32 + description: The amount of memory allocated to your process. + example: 1024 + requestedCPU: + type: number + format: double + description: The number of cores allocated to your process. + example: 0.5 + deploymentId: + $ref: '#/components/schemas/DeploymentId' + buildId: + $ref: '#/components/schemas/BuildId' + appId: + $ref: '#/components/schemas/AppId' + required: + - env + - roomsPerProcess + - planName + - additionalContainerPorts + - defaultContainerPort + - transportType + - containerPort + - createdAt + - createdBy + - requestedMemoryMB + - requestedCPU + - deploymentId + - buildId + - appId + type: object + description: >- + Deployment is a versioned configuration for a build that describes + runtime behavior. + BuildStatus: + type: string + enum: + - created + - running + - succeeded + - failed + Region: + type: string + enum: + - Seattle + - Los_Angeles + - Washington_DC + - Chicago + - London + - Frankfurt + - Mumbai + - Singapore + - Tokyo + - Sydney + - Sao_Paulo + BuildTag: + type: string + example: 0.1.14-14c793 + description: >- + Tag to associate an external version with a build. It is accessible via + [`GetBuildInfo()`](https://hathora.dev/api#tag/BuildV1/operation/GetBuildInfo). + maxLength: 1000 + Build: + properties: + buildTag: + allOf: + - $ref: '#/components/schemas/BuildTag' + nullable: true + regionalContainerTags: + items: + properties: + containerTag: + type: string + region: + $ref: '#/components/schemas/Region' + required: + - containerTag + - region + type: object + type: array + deprecated: true + imageSize: + type: integer + format: int64 + description: The size (in bytes) of the Docker image built by Hathora. + status: + $ref: '#/components/schemas/BuildStatus' + description: >- + Current status of your build. + + + `created`: a build was created but not yet run + + + `running`: the build process is actively executing + + + `succeeded`: the game server artifact was successfully built and + stored in the Hathora registries + + + `failed`: the build process was unsuccessful, most likely due to an + error with the `Dockerfile` + deletedAt: + type: string + format: date-time + nullable: true + description: When the build was deleted. + finishedAt: + type: string + format: date-time + nullable: true + description: >- + When + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + finished executing. + startedAt: + type: string + format: date-time + nullable: true + description: >- + When + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + is called. + createdAt: + type: string + format: date-time + description: >- + When + [`CreateBuild()`](https://hathora.dev/api#tag/BuildV1/operation/CreateBuild) + is called. + createdBy: + type: string + description: UserId or email address for the user that created the build. + example: google-oauth2|107030234048588177467 + buildId: + $ref: '#/components/schemas/BuildId' + appId: + $ref: '#/components/schemas/AppId' + required: + - regionalContainerTags + - imageSize + - status + - deletedAt + - finishedAt + - startedAt + - createdAt + - createdBy + - buildId + - appId + type: object + description: A build represents a game server artifact and its associated metadata. + ApplicationWithLatestDeploymentAndBuild: + allOf: + - $ref: '#/components/schemas/Application' + - properties: + deployment: + allOf: + - $ref: '#/components/schemas/Deployment' + - properties: + build: + $ref: '#/components/schemas/Build' + required: + - build + type: object + type: object + AppConfig: + properties: + authConfiguration: + $ref: '#/components/schemas/AuthConfiguration' + appName: + $ref: '#/components/schemas/AppName' + required: + - authConfiguration + - appName + type: object + ApiError: + properties: + message: + type: string + required: + - message + type: object + LoginResponse: + properties: + token: + type: string + description: A unique Hathora-signed JWT player token. + example: >- + eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoiYW5vbnltb3VzIiwiaWQiOiJ3aDA4eWN3eTJwOSIsIm5hbWUiOiJqaXR0ZXJ5LXNhbG1vbi1ndWxsIiwiaWF0IjoxNjg5MzQ5MTk3fQ.-LzlPhZw2tw0ycZ229IRHwwmINGKWNPFMDrXOphLjEk + required: + - token + type: object + LoginNicknameRequest: + properties: + nickname: + type: string + description: An alias to represent a player. + example: squiddytwoshoes + required: + - nickname + type: object + LoginGoogleRequest: + properties: + idToken: + type: string + description: >- + A Google-signed OIDC ID token representing a player's authenticated + identity. Learn how to get an `idToken` + [here](https://cloud.google.com/docs/authentication/get-id-token). + example: >- + eyJhbGciOiJSUzI1NiIsImtpZCI6ImZkNDhhNzUxMzhkOWQ0OGYwYWE2MzVlZjU2OWM0ZTE5NmY3YWU4ZDYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXpwIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTE0NTQyMzMwNzI3MTU2MTMzNzc2IiwiZW1haWwiOiJocGFdkeivmeuzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdF9oYXNoIjoidno1NGhhdTNxbnVR + required: + - idToken + type: object + CardBrand: + type: string + enum: + - amex + - cartes_bancaires + - diners + - discover + - jcb + - mastercard + - visa + - unionpay + - card + CardPaymentMethod: + properties: + last4: + type: string + brand: + $ref: '#/components/schemas/CardBrand' + required: + - last4 + - brand + type: object + AchPaymentMethod: + properties: + last4: + type: string + bankName: + type: string + type: object + LinkPaymentMethod: + properties: + email: + type: string + type: object + Partial__card-CardPaymentMethod--ach-AchPaymentMethod--link-LinkPaymentMethod--__: + properties: + card: + $ref: '#/components/schemas/CardPaymentMethod' + ach: + $ref: '#/components/schemas/AchPaymentMethod' + link: + $ref: '#/components/schemas/LinkPaymentMethod' + type: object + description: Make all properties in T optional + PaymentMethod: + $ref: >- + #/components/schemas/Partial__card-CardPaymentMethod--ach-AchPaymentMethod--link-LinkPaymentMethod--__ + CustomerPortalUrl: + properties: + returnUrl: + type: string + required: + - returnUrl + type: object + InvoiceStatus: + type: string + enum: + - pending + - paid + - overdue + Invoice: + properties: + status: + $ref: '#/components/schemas/InvoiceStatus' + amountDue: + type: number + format: double + pdfUrl: + type: string + dueDate: + type: string + format: date-time + year: + type: number + format: double + month: + type: number + format: double + id: + type: string + required: + - status + - amountDue + - pdfUrl + - dueDate + - year + - month + - id + type: object + CreateBuildParams: + properties: + buildTag: + $ref: '#/components/schemas/BuildTag' + type: object + DeploymentConfig: + properties: + idleTimeoutEnabled: + type: boolean + description: >- + Option to shut down processes that have had no new connections or + rooms + + for five minutes. + default: 'true' + env: + items: + properties: + value: + type: string + example: 'TRUE' + maxLength: 5000 + name: + type: string + example: EULA + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + required: + - value + - name + type: object + type: array + description: >- + The environment variable that our process will have access to at + runtime. + maxItems: 100 + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + planName: + $ref: '#/components/schemas/PlanName' + additionalContainerPorts: + items: + $ref: '#/components/schemas/ContainerPort' + type: array + description: Additional ports your server listens on. + maxItems: 2 + transportType: + $ref: '#/components/schemas/TransportType' + containerPort: + type: integer + format: int32 + description: Default port the server listens on. + example: 4000 + minimum: 1 + maximum: 65535 + required: + - env + - roomsPerProcess + - planName + - transportType + - containerPort + type: object + description: User specified deployment configuration for your application at runtime. + DiscoveryResponse: + items: + properties: + port: + type: number + format: double + host: + type: string + region: + $ref: '#/components/schemas/Region' + required: + - port + - host + - region + type: object + type: array + example: + - region: Seattle + host: ping.hathora.dev + port: 2000 + RoomId: + type: string + example: 2swovpy1fnunu + description: >- + Unique identifier to a game session or match. Use the default system + generated ID or overwrite it with your own. + + Note: error will be returned if `roomId` is not globally unique. + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z0-9_-]*$ + LobbyVisibility: + type: string + enum: + - private + - public + - local + example: private + description: >- + Types of lobbies a player can create. + + + `private`: the player who created the room must share the roomId with + their friends + + + `public`: visible in the public lobby list, anyone can join + + + `local`: for testing with a server running locally + LobbyInitialConfig: + additionalProperties: false + type: object + description: >- + User input to initialize the game state. Object must be smaller than + 64KB. + ShortCode: + type: string + example: LFG4 + description: User-defined identifier for a lobby. + maxLength: 100 + Lobby: + properties: + shortCode: + allOf: + - $ref: '#/components/schemas/ShortCode' + nullable: true + state: + additionalProperties: false + type: object + nullable: true + description: JSON blob to store metadata for a room. Must be smaller than 1MB. + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + createdAt: + type: string + format: date-time + description: When the lobby was created. + createdBy: + type: string + description: UserId or email address for the user that created the lobby. + example: google-oauth2|107030234048588177467 + local: + type: boolean + deprecated: true + visibility: + $ref: '#/components/schemas/LobbyVisibility' + region: + $ref: '#/components/schemas/Region' + roomId: + $ref: '#/components/schemas/RoomId' + appId: + $ref: '#/components/schemas/AppId' + required: + - shortCode + - initialConfig + - createdAt + - createdBy + - local + - visibility + - region + - roomId + - appId + type: object + description: A lobby object allows you to store and manage metadata for your rooms. + CreateLobbyParams: + properties: + visibility: + $ref: '#/components/schemas/LobbyVisibility' + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - visibility + - initialConfig + - region + type: object + SetLobbyStateParams: + properties: + state: + additionalProperties: false + type: object + description: JSON blob to store metadata for a room. Must be smaller than 1MB. + required: + - state + type: object + RoomConfig: + type: string + example: '{"name":"my-room"}' + description: >- + Optional configuration parameters for the room. Can be any string + including stringified JSON. It is accessible from the room via + [`GetRoomInfo()`](https://hathora.dev/api#tag/RoomV2/operation/GetRoomInfo). + maxLength: 10000 + LobbyV3: + properties: + shortCode: + $ref: '#/components/schemas/ShortCode' + description: User defined identifier for a lobby, defaults to `roomId` + createdAt: + type: string + format: date-time + description: When the lobby was created. + createdBy: + type: string + description: UserId or email address for the user that created the lobby. + example: google-oauth2|107030234048588177467 + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + visibility: + $ref: '#/components/schemas/LobbyVisibility' + region: + $ref: '#/components/schemas/Region' + roomId: + $ref: '#/components/schemas/RoomId' + description: >- + Hathora generated identifier for a room, unique for a given + application (including stopped rooms) + appId: + $ref: '#/components/schemas/AppId' + required: + - shortCode + - createdAt + - createdBy + - roomConfig + - visibility + - region + - roomId + - appId + type: object + description: A lobby object allows you to store and manage metadata for your rooms. + CreateLobbyV3Params: + properties: + visibility: + $ref: '#/components/schemas/LobbyVisibility' + roomConfig: + $ref: '#/components/schemas/RoomConfig' + region: + $ref: '#/components/schemas/Region' + required: + - visibility + - region + type: object + LogsFollow: + type: boolean + default: 'false' + description: Stream logs in realtime. + TailLines: + type: integer + format: int32 + default: '100' + example: 100 + description: Number of lines to return from most recent logs history. + minimum: 1 + maximum: 5000 + ProcessId: + type: string + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + description: >- + System generated unique identifier to a runtime instance of your game + server. + VerificationEmailResponse: + properties: + status: + type: string + enum: + - success + nullable: false + required: + - status + type: object + VerificationEmailRequest: + properties: + userId: + type: string + required: + - userId + type: object + MetricValue: + properties: + value: + type: number + format: double + timestamp: + type: number + format: double + required: + - value + - timestamp + type: object + Record_Partial_MetricName_.MetricValue-Array_: + properties: + cpu: + items: + $ref: '#/components/schemas/MetricValue' + type: array + memory: + items: + $ref: '#/components/schemas/MetricValue' + type: array + rate_egress: + items: + $ref: '#/components/schemas/MetricValue' + type: array + total_egress: + items: + $ref: '#/components/schemas/MetricValue' + type: array + active_connections: + items: + $ref: '#/components/schemas/MetricValue' + type: array + type: object + description: Construct a type with a set of properties K of type T + MetricsResponse: + $ref: '#/components/schemas/Record_Partial_MetricName_.MetricValue-Array_' + MetricName: + type: string + enum: + - cpu + - memory + - rate_egress + - total_egress + - active_connections + description: Available metrics to query over time. + MetricsStep: + type: integer + format: int32 + default: '60' + description: Width of time in seconds to group data. + ExposedPort: + properties: + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: integer + format: int32 + host: + type: string + name: + type: string + required: + - transportType + - port + - host + - name + type: object + example: + host: 1.proxy.hathora.dev + name: default + port: 34567 + transportType: tcp + description: Connection details for an active process. + Process: + properties: + egressedBytes: + type: integer + format: int32 + description: Measures network traffic leaving the process in bytes. + example: 435 + idleSince: + type: string + format: date-time + nullable: true + deprecated: true + activeConnectionsUpdatedAt: + type: string + format: date-time + deprecated: true + activeConnections: + type: integer + format: int32 + description: Tracks the number of active connections to a process. + example: 10 + deprecated: true + roomsAllocatedUpdatedAt: + type: string + format: date-time + roomsAllocated: + type: integer + format: int32 + description: Tracks the number of rooms that have been allocated to the process. + example: 1 + roomSlotsAvailableUpdatedAt: + type: string + format: date-time + deprecated: true + roomSlotsAvailable: + type: number + format: double + deprecated: true + draining: + type: boolean + description: Process in drain will not accept any new rooms. + terminatedAt: + type: string + format: date-time + nullable: true + description: When the process has been terminated. + stoppingAt: + type: string + format: date-time + nullable: true + description: >- + When the process is issued to stop. We use this to determine when we + should stop billing. + startedAt: + type: string + format: date-time + nullable: true + description: >- + When the process bound to the specified port. We use this to + determine when we should start billing. + startingAt: + type: string + format: date-time + description: When the process started being provisioned. + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + allOf: + - $ref: '#/components/schemas/ExposedPort' + nullable: true + port: + type: number + format: double + deprecated: true + host: + type: string + deprecated: true + region: + $ref: '#/components/schemas/Region' + processId: + $ref: '#/components/schemas/ProcessId' + deploymentId: + $ref: '#/components/schemas/DeploymentId' + appId: + $ref: '#/components/schemas/AppId' + required: + - egressedBytes + - idleSince + - activeConnectionsUpdatedAt + - activeConnections + - roomsAllocatedUpdatedAt + - roomsAllocated + - roomSlotsAvailableUpdatedAt + - roomSlotsAvailable + - draining + - terminatedAt + - stoppingAt + - startedAt + - startingAt + - roomsPerProcess + - additionalExposedPorts + - exposedPort + - port + - host + - region + - processId + - deploymentId + - appId + type: object + description: >- + A process object represents a runtime instance of your game server and + its metadata. + RoomStatus: + type: string + enum: + - scheduling + - active + - suspended + - destroyed + example: active + description: >- + The allocation status of a room. + + + `scheduling`: a process is not allocated yet and the room is waiting to + be scheduled + + + `active`: ready to accept connections + + + `suspended`: room is unallocated from the process but can be rescheduled + later with the same `roomId` + + + `destroyed`: all associated metadata is deleted + RoomAllocationId: + type: string + example: e3a0aa32-1711-4036-acfa-008b96061a78 + description: System generated unique identifier to an allocated instance of a room. + RoomAllocation: + properties: + unscheduledAt: + type: string + format: date-time + nullable: true + scheduledAt: + type: string + format: date-time + processId: + $ref: '#/components/schemas/ProcessId' + roomAllocationId: + $ref: '#/components/schemas/RoomAllocationId' + required: + - unscheduledAt + - scheduledAt + - processId + - roomAllocationId + type: object + description: Metadata on an allocated instance of a room. + Pick_Room.Exclude_keyofRoom.allocations__: + properties: + appId: + $ref: '#/components/schemas/AppId' + roomId: + $ref: '#/components/schemas/RoomId' + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + status: + $ref: '#/components/schemas/RoomStatus' + currentAllocation: + allOf: + - $ref: '#/components/schemas/RoomAllocation' + nullable: true + required: + - appId + - roomId + - roomConfig + - status + - currentAllocation + type: object + description: From T, pick a set of properties whose keys are in the union K + Omit_Room.allocations_: + $ref: '#/components/schemas/Pick_Room.Exclude_keyofRoom.allocations__' + description: Construct a type with the properties of T except for those in type K. + RoomWithoutAllocations: + $ref: '#/components/schemas/Omit_Room.allocations_' + ProcessWithRooms: + allOf: + - $ref: '#/components/schemas/Process' + - properties: + rooms: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + totalRooms: + type: integer + format: int32 + required: + - rooms + - totalRooms + type: object + ProcessStatus: + type: string + enum: + - starting + - running + - draining + - stopping + - stopped + - failed + ProcessV2: + properties: + status: + $ref: '#/components/schemas/ProcessStatus' + description: Process in drain will not accept any new rooms. + roomsAllocated: + type: integer + format: int32 + description: Tracks the number of rooms that have been allocated to the process. + example: 1 + terminatedAt: + type: string + format: date-time + nullable: true + description: When the process has been terminated. + stoppingAt: + type: string + format: date-time + nullable: true + description: >- + When the process is issued to stop. We use this to determine when we + should stop billing. + startedAt: + type: string + format: date-time + nullable: true + description: >- + When the process bound to the specified port. We use this to + determine when we should start billing. + createdAt: + type: string + format: date-time + description: When the process started being provisioned. + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + allOf: + - $ref: '#/components/schemas/ExposedPort' + nullable: true + region: + $ref: '#/components/schemas/Region' + processId: + $ref: '#/components/schemas/ProcessId' + deploymentId: + $ref: '#/components/schemas/DeploymentId' + appId: + $ref: '#/components/schemas/AppId' + required: + - status + - roomsAllocated + - terminatedAt + - stoppingAt + - startedAt + - createdAt + - roomsPerProcess + - additionalExposedPorts + - exposedPort + - region + - processId + - deploymentId + - appId + type: object + CreateRoomParams: + properties: + roomConfig: + $ref: '#/components/schemas/RoomConfig' + region: + $ref: '#/components/schemas/Region' + required: + - region + type: object + Room: + properties: + currentAllocation: + allOf: + - $ref: '#/components/schemas/RoomAllocation' + nullable: true + status: + $ref: '#/components/schemas/RoomStatus' + allocations: + items: + $ref: '#/components/schemas/RoomAllocation' + type: array + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + roomId: + $ref: '#/components/schemas/RoomId' + appId: + $ref: '#/components/schemas/AppId' + required: + - currentAllocation + - status + - allocations + - roomConfig + - roomId + - appId + type: object + description: A room object represents a game session or match. + StartingConnectionInfo: + properties: + status: + type: string + enum: + - starting + nullable: false + roomId: + $ref: '#/components/schemas/RoomId' + required: + - status + - roomId + type: object + ActiveConnectionInfo: + properties: + status: + type: string + enum: + - active + nullable: false + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: number + format: double + host: + type: string + roomId: + $ref: '#/components/schemas/RoomId' + required: + - status + - transportType + - port + - host + - roomId + type: object + ConnectionInfo: + anyOf: + - $ref: '#/components/schemas/StartingConnectionInfo' + - $ref: '#/components/schemas/ActiveConnectionInfo' + description: Connection information to the default port. + ConnectionInfoV2: + properties: + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + $ref: '#/components/schemas/ExposedPort' + status: + type: string + enum: + - starting + - active + description: >- + `exposedPort` will only be available when the `status` of a room is + "active". + example: active + roomId: + $ref: '#/components/schemas/RoomId' + required: + - additionalExposedPorts + - status + - roomId + type: object + description: Connection information for the default and additional ports. + CreateRoomResponse: + allOf: + - $ref: '#/components/schemas/ConnectionInfoV2' + - properties: + processId: + $ref: '#/components/schemas/ProcessId' + required: + - processId + type: object + UpdateRoomConfigParams: + properties: + roomConfig: + $ref: '#/components/schemas/RoomConfig' + required: + - roomConfig + type: object + OrgTokenId: + type: string + example: org-token-af469a92-5b45-4565-b3c4-b79878de67d2 + description: System generated unique identifier for an organization token. + OrgTokenName: + type: string + example: ci-token + description: Readable name for a token. Must be unique within an organization. + maxLength: 64 + OrgTokenStatus: + type: string + enum: + - active + - revoked + OrgToken: + properties: + createdAt: + type: string + format: date-time + createdBy: + type: string + lastFourCharsOfKey: + type: string + status: + $ref: '#/components/schemas/OrgTokenStatus' + name: + $ref: '#/components/schemas/OrgTokenName' + orgId: + type: string + orgTokenId: + $ref: '#/components/schemas/OrgTokenId' + required: + - createdAt + - createdBy + - lastFourCharsOfKey + - status + - name + - orgId + - orgTokenId + type: object + ListOrgTokens: + properties: + tokens: + items: + $ref: '#/components/schemas/OrgToken' + type: array + required: + - tokens + type: object + CreatedOrgToken: + properties: + plainTextToken: + type: string + orgToken: + $ref: '#/components/schemas/OrgToken' + required: + - plainTextToken + - orgToken + type: object + CreateOrgToken: + properties: + name: + $ref: '#/components/schemas/OrgTokenName' + required: + - name + type: object + securitySchemes: + hathoraDevToken: + type: http + scheme: bearer + bearerFormat: JWT + playerAuth: + type: http + scheme: bearer + bearerFormat: JWT +info: + title: Hathora Cloud API + version: 0.0.1 + description: >- + Welcome to the Hathora Cloud API documentation! Learn how to use the Hathora + Cloud APIs to build and scale your game servers globally. + contact: {} +openapi: 3.0.0 +paths: + /apps/v1/list: + get: + operationId: GetApps + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/ApplicationWithLatestDeploymentAndBuild' + type: array + description: >- + Returns an unsorted list of your organization’s + [applications](https://hathora.dev/docs/concepts/hathora-entities#application). + An application is uniquely identified by an `appId`. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: [] + /apps/v1/create: + post: + operationId: CreateApp + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppConfig' + /apps/v1/update/{appId}: + post: + operationId: UpdateApp + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Update data for an existing + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppConfig' + /apps/v1/info/{appId}: + get: + operationId: GetAppInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /apps/v1/delete/{appId}: + delete: + operationId: DeleteApp + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Delete an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. Your organization will lose access to this application. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /auth/v1/{appId}/login/anonymous: + post: + operationId: LoginAnonymous + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Returns a unique player token for an anonymous user. + tags: + - AuthV1 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /auth/v1/{appId}/login/nickname: + post: + operationId: LoginNickname + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Returns a unique player token with a specified nickname for a user. + tags: + - AuthV1 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LoginNicknameRequest' + /auth/v1/{appId}/login/google: + post: + operationId: LoginGoogle + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Returns a unique player token using a Google-signed OIDC `idToken`. + tags: + - AuthV1 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LoginGoogleRequest' + /billing/v1/balance: + get: + operationId: GetBalance + responses: + '200': + description: Ok + content: + application/json: + schema: + type: number + format: double + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + /billing/v1/paymentmethod: + get: + operationId: GetPaymentMethod + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/PaymentMethod' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + /billing/v1/customerportalurl: + post: + operationId: InitStripeCustomerPortalUrl + responses: + '200': + description: Ok + content: + application/json: + schema: + type: string + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CustomerPortalUrl' + /billing/v1/invoices: + get: + operationId: GetInvoices + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Invoice' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + /builds/v1/{appId}/list: + get: + operationId: GetBuilds + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Build' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns an array of + [builds](https://hathora.dev/docs/concepts/hathora-entities#build) for + an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /builds/v1/{appId}/info/{buildId}: + get: + operationId: GetBuildInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Build' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [build](https://hathora.dev/docs/concepts/hathora-entities#build). + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + /builds/v1/{appId}/create: + post: + operationId: CreateBuild + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Build' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Creates a new + [build](https://hathora.dev/docs/concepts/hathora-entities#build). + Responds with a `buildId` that you must pass to + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + to build the game server artifact. You can optionally pass in a + `buildTag` to associate an external version with a build. + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateBuildParams' + /builds/v1/{appId}/run/{buildId}: + post: + operationId: RunBuild + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Builds a game server artifact from a tarball you provide. Pass in the + `buildId` generated from + [`CreateBuild()`](https://hathora.dev/api#tag/BuildV1/operation/CreateBuild). + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + requestBody: + required: true + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + required: + - file + /builds/v1/{appId}/delete/{buildId}: + delete: + operationId: DeleteBuild + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Delete a + [build](https://hathora.dev/docs/concepts/hathora-entities#build). All + associated metadata is deleted. + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + /deployments/v1/{appId}/list: + get: + operationId: GetDeployments + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Deployment' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns an array of + [deployments](https://hathora.dev/docs/concepts/hathora-entities#deployment) + for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /deployments/v1/{appId}/latest: + get: + operationId: GetLatestDeployment + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get the latest + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) + for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /deployments/v1/{appId}/info/{deploymentId}: + get: + operationId: GetDeploymentInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment). + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: deploymentId + required: true + schema: + $ref: '#/components/schemas/DeploymentId' + /deployments/v1/{appId}/create/{buildId}: + post: + operationId: CreateDeployment + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment). + Creating a new deployment means all new rooms created will use the + latest deployment configuration, but existing games in progress will not + be affected. + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentConfig' + /discovery/v1/ping: + get: + operationId: GetPingServiceEndpoints + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/DiscoveryResponse' + description: >- + Returns an array of all regions with a host and port that a client can + directly ping. Open a websocket connection to `wss://:/ws` + and send a packet. To calculate ping, measure the time it takes to get + an echo packet back. + tags: + - DiscoveryV1 + security: [] + parameters: [] + /lobby/v1/{appId}/create/private: + post: + operationId: CreatePrivateLobbyDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV1 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + - in: query + name: local + required: false + schema: + default: false + type: boolean + /lobby/v1/{appId}/create/public: + post: + operationId: CreatePublicLobbyDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV1 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + - in: query + name: local + required: false + schema: + default: false + type: boolean + /lobby/v1/{appId}/list: + get: + operationId: ListActivePublicLobbiesDeprecatedV1 + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Lobby' + type: array + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV1 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: local + required: false + schema: + default: false + type: boolean + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /lobby/v2/{appId}/create/private: + post: + operationId: CreatePrivateLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + /lobby/v2/{appId}/create/public: + post: + operationId: CreatePublicLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + /lobby/v2/{appId}/create/local: + post: + operationId: CreateLocalLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + /lobby/v2/{appId}/create: + post: + operationId: CreateLobbyDeprecated + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new lobby for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + A lobby object is a wrapper around a + [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. + With a lobby, you get additional functionality like configuring the + visibility of the room, managing the state of a match, and retrieving a + list of public lobbies to display to players. + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateLobbyParams' + /lobby/v2/{appId}/list/public: + get: + operationId: ListActivePublicLobbiesDeprecatedV2 + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Lobby' + type: array + description: >- + Get all active lobbies for a an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter by optionally passing in a `region`. Use this endpoint to display + all public lobbies that a player can join in the game client. + tags: + - LobbyV2 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - description: >- + Region to filter by. If omitted, active public lobbies in all + regions will be returned. + in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /lobby/v2/{appId}/info/{roomId}: + get: + operationId: GetLobbyInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Get details for a lobby. + tags: + - LobbyV2 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /lobby/v2/{appId}/setState/{roomId}: + post: + operationId: SetLobbyState + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Set the state of a lobby. State is intended to be set by the server and + must be smaller than 1MB. Use this endpoint to store match data like + live player count to enforce max number of clients or persist end-game + data (i.e. winner or final scores). + tags: + - LobbyV2 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SetLobbyStateParams' + /lobby/v3/{appId}/create: + post: + operationId: CreateLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new lobby for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + A lobby object is a wrapper around a + [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. + With a lobby, you get additional functionality like configuring the + visibility of the room, managing the state of a match, and retrieving a + list of public lobbies to display to players. + tags: + - LobbyV3 + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: shortCode + required: false + schema: + $ref: '#/components/schemas/ShortCode' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateLobbyV3Params' + /lobby/v3/{appId}/list/public: + get: + operationId: ListActivePublicLobbies + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/LobbyV3' + type: array + description: >- + Get all active lobbies for a given + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. Use this endpoint + to display all public lobbies that a player can join in the game client. + tags: + - LobbyV3 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - description: If omitted, active public lobbies in all regions will be returned. + in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /lobby/v3/{appId}/info/roomid/{roomId}: + get: + operationId: GetLobbyInfoByRoomId + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Get details for a lobby. + tags: + - LobbyV3 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /lobby/v3/{appId}/info/shortcode/{shortCode}: + get: + operationId: GetLobbyInfoByShortCode + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a lobby. If 2 or more lobbies have the same `shortCode`, + then the most recently created lobby will be returned. + tags: + - LobbyV3 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: shortCode + required: true + schema: + $ref: '#/components/schemas/ShortCode' + /logs/v1/{appId}/all: + get: + operationId: GetLogsForApp + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns a stream of logs for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + tags: + - LogV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /logs/v1/{appId}/process/{processId}: + get: + operationId: GetLogsForProcess + responses: + '200': + description: Ok + content: + application/octet-stream: + schema: + type: string + format: byte + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '410': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns a stream of logs for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + using `appId` and `processId`. + tags: + - LogV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + /logs/v1/{appId}/process/{processId}/download: + get: + operationId: DownloadLogForProcess + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '410': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Download entire log file for a stopped process. + tags: + - LogV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /logs/v1/{appId}/deployment/{deploymentId}: + get: + operationId: GetLogsForDeployment + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns a stream of logs for a + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) + using `appId` and `deploymentId`. + tags: + - LogV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: deploymentId + required: true + schema: + $ref: '#/components/schemas/DeploymentId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + /management/v1/sendverificationemail: + post: + operationId: SendVerificationEmail + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/VerificationEmailResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - ManagementV1 + security: [] + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/VerificationEmailRequest' + /metrics/v1/{appId}/process/{processId}: + get: + operationId: GetMetrics + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/MetricsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get metrics for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + using `appId` and `processId`. + tags: + - MetricsV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + - description: Available metrics to query over time. + in: query + name: metrics + required: false + schema: + default: + - cpu + - memory + - rate_egress + type: array + items: + $ref: '#/components/schemas/MetricName' + - description: Unix timestamp. Default is current time. + in: query + name: end + required: false + schema: + format: double + type: number + - description: Unix timestamp. Default is -1 hour from `end`. + in: query + name: start + required: false + schema: + format: double + type: number + - in: query + name: step + required: false + schema: + $ref: '#/components/schemas/MetricsStep' + /processes/v1/{appId}/list/running: + get: + operationId: GetRunningProcesses + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/ProcessWithRooms' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retrieve 10 most recently started + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. + tags: + - ProcessesV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /processes/v1/{appId}/list/stopped: + get: + operationId: GetStoppedProcesses + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Process' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retrieve 10 most recently stopped + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. + tags: + - ProcessesV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /processes/v1/{appId}/info/{processId}: + get: + operationId: GetProcessInfoDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Process' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - ProcessesV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /processes/v2/{appId}/info/{processId}: + get: + operationId: GetProcessInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessV2' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /processes/v2/{appId}/list/latest: + get: + operationId: GetLatestProcesses + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/ProcessV2' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retrieve the 10 most recent + [processes](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `status` or `region`. + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: status + required: false + schema: + type: array + items: + $ref: '#/components/schemas/ProcessStatus' + - in: query + name: region + required: false + schema: + type: array + items: + $ref: '#/components/schemas/Region' + /processes/v2/{appId}/stop/{processId}: + post: + operationId: StopProcess + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Stops a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + immediately. + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /processes/v2/{appId}/create/{region}: + post: + operationId: CreateProcess + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessV2' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Creates a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + without a room. Use this to pre-allocate processes ahead of time so that + subsequent room assignment via + [CreateRoom()](https://hathora.dev/api#tag/RoomV2/operation/CreateRoom) + can be instant. + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: region + required: true + schema: + $ref: '#/components/schemas/Region' + /rooms/v1/{appId}/create: + post: + operationId: CreateRoomDeprecated + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomParams' + /rooms/v1/{appId}/info/{roomId}: + get: + operationId: GetRoomInfoDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Room' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v1/{appId}/list/{processId}/active: + get: + operationId: GetActiveRoomsForProcessDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v1/{appId}/list/{processId}/inactive: + get: + operationId: GetInactiveRoomsForProcessDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v1/{appId}/destroy/{roomId}: + post: + operationId: DestroyRoomDeprecated + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v1/{appId}/suspend/{roomId}: + post: + operationId: SuspendRoomDeprecated + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v1/{appId}/connectioninfo/{roomId}: + get: + operationId: GetConnectionInfoDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ConnectionInfo' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/create: + post: + operationId: CreateRoom + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new + [room](https://hathora.dev/docs/concepts/hathora-entities#room) for an + existing + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Poll the + [`GetConnectionInfo()`](https://hathora.dev/api#tag/RoomV2/operation/GetConnectionInfo) + endpoint to get connection details for an active room. + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomParams' + /rooms/v2/{appId}/info/{roomId}: + get: + operationId: GetRoomInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Room' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retreive current and historical allocation data for a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/list/{processId}/active: + get: + operationId: GetActiveRoomsForProcess + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get all active + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a + given + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v2/{appId}/list/{processId}/inactive: + get: + operationId: GetInactiveRoomsForProcess + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get all inactive + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a + given + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v2/{appId}/destroy/{roomId}: + post: + operationId: DestroyRoom + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Destroy a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). All + associated metadata is deleted. + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/suspend/{roomId}: + post: + operationId: SuspendRoom + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Suspend a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). The + room is unallocated from the process but can be rescheduled later using + the same `roomId`. + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/connectioninfo/{roomId}: + get: + operationId: GetConnectionInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ConnectionInfoV2' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Poll this endpoint to get connection details to a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). Clients + can call this endpoint without authentication. + tags: + - RoomV2 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/update/{roomId}: + post: + operationId: UpdateRoomConfig + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRoomConfigParams' + /tokens/v1/orgs/{orgId}: + get: + operationId: GetOrgTokens + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListOrgTokens' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: List all organization tokens for a given org. + tags: + - OrgTokensV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + /tokens/v1/orgs/{orgId}/create: + post: + operationId: CreateOrgToken + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedOrgToken' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Create a new organization token. + tags: + - OrgTokensV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrgToken' + /tokens/v1/orgs/{orgId}/tokens/{orgTokenId}/revoke: + post: + operationId: RevokeOrgToken + responses: + '200': + description: Ok + content: + application/json: + schema: + type: boolean + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Revoke an organization token. + tags: + - OrgTokensV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + - in: path + name: orgTokenId + required: true + schema: + $ref: '#/components/schemas/OrgId' +servers: + - url: https://api.hathora.dev + - url: / +tags: + - name: AppV1 + description: >- + Operations that allow you manage your + [applications](https://hathora.dev/docs/concepts/hathora-entities#application). + - name: AuthV1 + description: >- + Operations that allow you to generate a Hathora-signed [JSON web token + (JWT)](https://jwt.io/) for [player + authentication](https://hathora.dev/docs/lobbies-and-matchmaking/auth-service). + - name: BuildV1 + description: >- + Operations that allow you create and manage your + [builds](https://hathora.dev/docs/concepts/hathora-entities#build). + - name: DeploymentV1 + description: >- + Operations that allow you configure and manage an application's + [build](https://hathora.dev/docs/concepts/hathora-entities#build) at + runtime. + - name: DiscoveryV1 + description: >- + Service that allows clients to directly ping all Hathora regions to get + latency information + - name: LobbyV3 + description: >- + Operations to create and manage lobbies using our [Lobby + Service](https://hathora.dev/docs/lobbies-and-matchmaking/lobby-service). + - name: LogV1 + description: >- + Operations to get logs by + [applications](https://hathora.dev/docs/concepts/hathora-entities#application), + [processes](https://hathora.dev/docs/concepts/hathora-entities#process), + and + [deployments](https://hathora.dev/docs/concepts/hathora-entities#deployment). + We store 20GB of logs data. + - name: MetricsV1 + description: >- + Operations to get metrics by + [process](https://hathora.dev/docs/concepts/hathora-entities#process). We + store 72 hours of metrics data. + - name: ProcessesV2 + description: >- + Operations to get data on active and stopped + [processes](https://hathora.dev/docs/concepts/hathora-entities#process). + - name: RoomV2 + description: >- + Operations to create, manage, and connect to + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room). + - name: LobbyV1 + description: Deprecated. Use [LobbyV3](https://hathora.dev/api#tag/LobbyV3). + - name: LobbyV2 + description: Deprecated. Use [LobbyV3](https://hathora.dev/api#tag/LobbyV3). + - name: ProcessesV1 + description: Deprecated. Use [ProcessesV2](https://hathora.dev/api#tag/ProcessesV2). + - name: RoomV1 + description: Deprecated. Use [RoomV2](https://hathora.dev/api#tag/RoomV2). +x-speakeasy-globals: + parameters: + - in: path + name: appId + schema: + $ref: '#/components/schemas/AppId' diff --git a/sdks/db/fixed-specs-cache/hathora-fixed-spec.yaml b/sdks/db/fixed-specs-cache/hathora-fixed-spec.yaml new file mode 100644 index 0000000000..dd8f462053 --- /dev/null +++ b/sdks/db/fixed-specs-cache/hathora-fixed-spec.yaml @@ -0,0 +1,4664 @@ +publishJson: + company: Hathora + serviceName: false + sdkName: hathora-{language}-sdk + clientName: Hathora + metaDescription: >- + A venture-backed start-up building a modern cloud optimized for multiplayer + games. + apiStatusUrls: inherit + homepage: hathora.dev/ + developerDocumentation: hathora.dev/api + categories: + - gaming + - multiplayer_games + - infrastructure + - server_orchestration +rawSpecString: | + components: + examples: {} + headers: {} + parameters: {} + requestBodies: {} + responses: {} + schemas: + AppName: + type: string + example: minecraft + description: Readable name for an application. Must be unique within an organization. + maxLength: 64 + pattern: ^[a-z0-9-]+$ + AppId: + type: string + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + description: System generated unique identifier for an application. + Record_string.never_: + properties: {} + type: object + description: Construct a type with a set of properties K of type T + AuthConfiguration: + properties: + google: + properties: + clientId: + type: string + description: >- + A Google generated token representing the developer's + credentials for [Google's API + Console](https://console.cloud.google.com/apis/dashboard?pli=1&project=discourse-login-388921). + Learn how to get a `clientId` + [here](https://developers.google.com/identity/gsi/web/guides/get-google-api-clientid). + required: + - clientId + type: object + description: Enable google auth for your application. + nickname: + $ref: '#/components/schemas/Record_string.never_' + description: Enable nickname auth for your application. + anonymous: + $ref: '#/components/schemas/Record_string.never_' + description: Enable anonymous auth for your application. + type: object + description: >- + Configure [player + authentication](https://hathora.dev/docs/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). + OrgId: + type: string + example: org-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + description: >- + System generated unique identifier for an organization. Not guaranteed + to have a specific format. + Application: + properties: + deletedBy: + type: string + nullable: true + description: UserId or email address for the user that deleted the application. + example: google-oauth2|107030234048588177467 + deletedAt: + type: string + format: date-time + nullable: true + description: When the application was deleted. + createdAt: + type: string + format: date-time + description: When the application was created. + createdBy: + type: string + description: UserId or email address for the user that created the application. + example: google-oauth2|107030234048588177467 + orgId: + $ref: '#/components/schemas/OrgId' + authConfiguration: + $ref: '#/components/schemas/AuthConfiguration' + description: >- + Used to authenticate player requests. Use your own authentication or + Hathora's Auth Client. + appSecret: + type: string + description: Secret that is used for identity and access management. + example: secret-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + appId: + $ref: '#/components/schemas/AppId' + appName: + $ref: '#/components/schemas/AppName' + required: + - deletedBy + - deletedAt + - createdAt + - createdBy + - orgId + - authConfiguration + - appSecret + - appId + - appName + type: object + description: An application object is the top level namespace for the game server. + BuildId: + type: integer + format: int32 + example: 1 + description: System generated id for a build. Increments by 1. + DeploymentId: + type: integer + format: int32 + example: 1 + description: System generated id for a deployment. Increments by 1. + TransportType: + type: string + enum: + - tcp + - udp + - tls + description: >- + Transport type specifies the underlying communication protocol to the + exposed port. + ContainerPort: + properties: + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: integer + format: int32 + example: 8000 + minimum: 1 + maximum: 65535 + name: + type: string + description: Readable name for the port. + example: default + minLength: 1 + maxLength: 100 + pattern: ^[a-z][a-z0-9-]*$ + required: + - transportType + - port + - name + type: object + description: >- + A container port object represents the transport configruations for how + your server will listen. + PlanName: + type: string + enum: + - tiny + - small + - medium + - large + example: tiny + description: >- + A plan defines how much CPU and memory is required to run an instance of + your game server. + + + `tiny`: shared core, 1gb memory + + + `small`: 1 core, 2gb memory + + + `medium`: 2 core, 4gb memory + + + `large`: 4 core, 8gb memory + NumRoomsPerProcess: + type: integer + format: int32 + example: 3 + description: >- + Governs how many + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) can be + scheduled in a process. + minimum: 1 + maximum: 10000 + Deployment: + properties: + idleTimeoutEnabled: + type: boolean + description: >- + Option to shut down processes that have had no new connections or + rooms + + for five minutes. + default: 'true' + env: + items: + properties: + value: + type: string + example: 'TRUE' + maxLength: 5000 + name: + type: string + example: EULA + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + required: + - value + - name + type: object + type: array + description: >- + The environment variable that our process will have access to at + runtime. + maxItems: 100 + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + planName: + $ref: '#/components/schemas/PlanName' + additionalContainerPorts: + items: + $ref: '#/components/schemas/ContainerPort' + type: array + description: Additional ports your server listens on. + example: + transportType: tcp + port: 4000 + name: debug + maxItems: 2 + defaultContainerPort: + $ref: '#/components/schemas/ContainerPort' + description: Describes the primary port your process listens on. + transportType: + type: string + enum: + - tcp + - udp + - tls + deprecated: true + containerPort: + type: number + format: double + deprecated: true + createdAt: + type: string + format: date-time + description: When the deployment was created. + createdBy: + type: string + description: UserId or email address for the user that created the deployment. + example: google-oauth2|107030234048588177467 + requestedMemoryMB: + type: integer + format: int32 + description: The amount of memory allocated to your process. + example: 1024 + requestedCPU: + type: number + format: double + description: The number of cores allocated to your process. + example: 0.5 + deploymentId: + $ref: '#/components/schemas/DeploymentId' + buildId: + $ref: '#/components/schemas/BuildId' + appId: + $ref: '#/components/schemas/AppId' + required: + - env + - roomsPerProcess + - planName + - additionalContainerPorts + - defaultContainerPort + - transportType + - containerPort + - createdAt + - createdBy + - requestedMemoryMB + - requestedCPU + - deploymentId + - buildId + - appId + type: object + description: >- + Deployment is a versioned configuration for a build that describes + runtime behavior. + BuildStatus: + type: string + enum: + - created + - running + - succeeded + - failed + Region: + type: string + enum: + - Seattle + - Los_Angeles + - Washington_DC + - Chicago + - London + - Frankfurt + - Mumbai + - Singapore + - Tokyo + - Sydney + - Sao_Paulo + BuildTag: + type: string + example: 0.1.14-14c793 + description: >- + Tag to associate an external version with a build. It is accessible via + [`GetBuildInfo()`](https://hathora.dev/api#tag/BuildV1/operation/GetBuildInfo). + maxLength: 1000 + Build: + properties: + buildTag: + allOf: + - $ref: '#/components/schemas/BuildTag' + nullable: true + regionalContainerTags: + items: + properties: + containerTag: + type: string + region: + $ref: '#/components/schemas/Region' + required: + - containerTag + - region + type: object + type: array + deprecated: true + imageSize: + type: integer + format: int64 + description: The size (in bytes) of the Docker image built by Hathora. + status: + $ref: '#/components/schemas/BuildStatus' + description: >- + Current status of your build. + + + `created`: a build was created but not yet run + + + `running`: the build process is actively executing + + + `succeeded`: the game server artifact was successfully built and + stored in the Hathora registries + + + `failed`: the build process was unsuccessful, most likely due to an + error with the `Dockerfile` + deletedAt: + type: string + format: date-time + nullable: true + description: When the build was deleted. + finishedAt: + type: string + format: date-time + nullable: true + description: >- + When + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + finished executing. + startedAt: + type: string + format: date-time + nullable: true + description: >- + When + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + is called. + createdAt: + type: string + format: date-time + description: >- + When + [`CreateBuild()`](https://hathora.dev/api#tag/BuildV1/operation/CreateBuild) + is called. + createdBy: + type: string + description: UserId or email address for the user that created the build. + example: google-oauth2|107030234048588177467 + buildId: + $ref: '#/components/schemas/BuildId' + appId: + $ref: '#/components/schemas/AppId' + required: + - regionalContainerTags + - imageSize + - status + - deletedAt + - finishedAt + - startedAt + - createdAt + - createdBy + - buildId + - appId + type: object + description: A build represents a game server artifact and its associated metadata. + ApplicationWithLatestDeploymentAndBuild: + allOf: + - $ref: '#/components/schemas/Application' + - properties: + deployment: + allOf: + - $ref: '#/components/schemas/Deployment' + - properties: + build: + $ref: '#/components/schemas/Build' + required: + - build + type: object + type: object + AppConfig: + properties: + authConfiguration: + $ref: '#/components/schemas/AuthConfiguration' + appName: + $ref: '#/components/schemas/AppName' + required: + - authConfiguration + - appName + type: object + ApiError: + properties: + message: + type: string + required: + - message + type: object + LoginResponse: + properties: + token: + type: string + description: A unique Hathora-signed JWT player token. + example: >- + eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoiYW5vbnltb3VzIiwiaWQiOiJ3aDA4eWN3eTJwOSIsIm5hbWUiOiJqaXR0ZXJ5LXNhbG1vbi1ndWxsIiwiaWF0IjoxNjg5MzQ5MTk3fQ.-LzlPhZw2tw0ycZ229IRHwwmINGKWNPFMDrXOphLjEk + required: + - token + type: object + LoginNicknameRequest: + properties: + nickname: + type: string + description: An alias to represent a player. + example: squiddytwoshoes + required: + - nickname + type: object + LoginGoogleRequest: + properties: + idToken: + type: string + description: >- + A Google-signed OIDC ID token representing a player's authenticated + identity. Learn how to get an `idToken` + [here](https://cloud.google.com/docs/authentication/get-id-token). + example: >- + eyJhbGciOiJSUzI1NiIsImtpZCI6ImZkNDhhNzUxMzhkOWQ0OGYwYWE2MzVlZjU2OWM0ZTE5NmY3YWU4ZDYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXpwIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTE0NTQyMzMwNzI3MTU2MTMzNzc2IiwiZW1haWwiOiJocGFdkeivmeuzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdF9oYXNoIjoidno1NGhhdTNxbnVR + required: + - idToken + type: object + CardBrand: + type: string + enum: + - amex + - cartes_bancaires + - diners + - discover + - jcb + - mastercard + - visa + - unionpay + - card + CardPaymentMethod: + properties: + last4: + type: string + brand: + $ref: '#/components/schemas/CardBrand' + required: + - last4 + - brand + type: object + AchPaymentMethod: + properties: + last4: + type: string + bankName: + type: string + type: object + LinkPaymentMethod: + properties: + email: + type: string + type: object + Partial__card-CardPaymentMethod--ach-AchPaymentMethod--link-LinkPaymentMethod--__: + properties: + card: + $ref: '#/components/schemas/CardPaymentMethod' + ach: + $ref: '#/components/schemas/AchPaymentMethod' + link: + $ref: '#/components/schemas/LinkPaymentMethod' + type: object + description: Make all properties in T optional + PaymentMethod: + $ref: >- + #/components/schemas/Partial__card-CardPaymentMethod--ach-AchPaymentMethod--link-LinkPaymentMethod--__ + CustomerPortalUrl: + properties: + returnUrl: + type: string + required: + - returnUrl + type: object + InvoiceStatus: + type: string + enum: + - pending + - paid + - overdue + Invoice: + properties: + status: + $ref: '#/components/schemas/InvoiceStatus' + amountDue: + type: number + format: double + pdfUrl: + type: string + dueDate: + type: string + format: date-time + year: + type: number + format: double + month: + type: number + format: double + id: + type: string + required: + - status + - amountDue + - pdfUrl + - dueDate + - year + - month + - id + type: object + CreateBuildParams: + properties: + buildTag: + $ref: '#/components/schemas/BuildTag' + type: object + DeploymentConfig: + properties: + idleTimeoutEnabled: + type: boolean + description: >- + Option to shut down processes that have had no new connections or + rooms + + for five minutes. + default: 'true' + env: + items: + properties: + value: + type: string + example: 'TRUE' + maxLength: 5000 + name: + type: string + example: EULA + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + required: + - value + - name + type: object + type: array + description: >- + The environment variable that our process will have access to at + runtime. + maxItems: 100 + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + planName: + $ref: '#/components/schemas/PlanName' + additionalContainerPorts: + items: + $ref: '#/components/schemas/ContainerPort' + type: array + description: Additional ports your server listens on. + maxItems: 2 + transportType: + $ref: '#/components/schemas/TransportType' + containerPort: + type: integer + format: int32 + description: Default port the server listens on. + example: 4000 + minimum: 1 + maximum: 65535 + required: + - env + - roomsPerProcess + - planName + - transportType + - containerPort + type: object + description: User specified deployment configuration for your application at runtime. + DiscoveryResponse: + items: + properties: + port: + type: number + format: double + host: + type: string + region: + $ref: '#/components/schemas/Region' + required: + - port + - host + - region + type: object + type: array + example: + - region: Seattle + host: ping.hathora.dev + port: 2000 + RoomId: + type: string + example: 2swovpy1fnunu + description: >- + Unique identifier to a game session or match. Use the default system + generated ID or overwrite it with your own. + + Note: error will be returned if `roomId` is not globally unique. + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z0-9_-]*$ + LobbyVisibility: + type: string + enum: + - private + - public + - local + example: private + description: >- + Types of lobbies a player can create. + + + `private`: the player who created the room must share the roomId with + their friends + + + `public`: visible in the public lobby list, anyone can join + + + `local`: for testing with a server running locally + LobbyInitialConfig: + additionalProperties: false + type: object + description: >- + User input to initialize the game state. Object must be smaller than + 64KB. + ShortCode: + type: string + example: LFG4 + description: User-defined identifier for a lobby. + maxLength: 100 + Lobby: + properties: + shortCode: + allOf: + - $ref: '#/components/schemas/ShortCode' + nullable: true + state: + additionalProperties: false + type: object + nullable: true + description: JSON blob to store metadata for a room. Must be smaller than 1MB. + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + createdAt: + type: string + format: date-time + description: When the lobby was created. + createdBy: + type: string + description: UserId or email address for the user that created the lobby. + example: google-oauth2|107030234048588177467 + local: + type: boolean + deprecated: true + visibility: + $ref: '#/components/schemas/LobbyVisibility' + region: + $ref: '#/components/schemas/Region' + roomId: + $ref: '#/components/schemas/RoomId' + appId: + $ref: '#/components/schemas/AppId' + required: + - shortCode + - initialConfig + - createdAt + - createdBy + - local + - visibility + - region + - roomId + - appId + type: object + description: A lobby object allows you to store and manage metadata for your rooms. + CreateLobbyParams: + properties: + visibility: + $ref: '#/components/schemas/LobbyVisibility' + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - visibility + - initialConfig + - region + type: object + SetLobbyStateParams: + properties: + state: + additionalProperties: false + type: object + description: JSON blob to store metadata for a room. Must be smaller than 1MB. + required: + - state + type: object + RoomConfig: + type: string + example: '{"name":"my-room"}' + description: >- + Optional configuration parameters for the room. Can be any string + including stringified JSON. It is accessible from the room via + [`GetRoomInfo()`](https://hathora.dev/api#tag/RoomV2/operation/GetRoomInfo). + maxLength: 10000 + LobbyV3: + properties: + shortCode: + $ref: '#/components/schemas/ShortCode' + description: User defined identifier for a lobby, defaults to `roomId` + createdAt: + type: string + format: date-time + description: When the lobby was created. + createdBy: + type: string + description: UserId or email address for the user that created the lobby. + example: google-oauth2|107030234048588177467 + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + visibility: + $ref: '#/components/schemas/LobbyVisibility' + region: + $ref: '#/components/schemas/Region' + roomId: + $ref: '#/components/schemas/RoomId' + description: >- + Hathora generated identifier for a room, unique for a given + application (including stopped rooms) + appId: + $ref: '#/components/schemas/AppId' + required: + - shortCode + - createdAt + - createdBy + - roomConfig + - visibility + - region + - roomId + - appId + type: object + description: A lobby object allows you to store and manage metadata for your rooms. + CreateLobbyV3Params: + properties: + visibility: + $ref: '#/components/schemas/LobbyVisibility' + roomConfig: + $ref: '#/components/schemas/RoomConfig' + region: + $ref: '#/components/schemas/Region' + required: + - visibility + - region + type: object + LogsFollow: + type: boolean + default: 'false' + description: Stream logs in realtime. + TailLines: + type: integer + format: int32 + default: '100' + example: 100 + description: Number of lines to return from most recent logs history. + minimum: 1 + maximum: 5000 + ProcessId: + type: string + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + description: >- + System generated unique identifier to a runtime instance of your game + server. + VerificationEmailResponse: + properties: + status: + type: string + enum: + - success + nullable: false + required: + - status + type: object + VerificationEmailRequest: + properties: + userId: + type: string + required: + - userId + type: object + MetricValue: + properties: + value: + type: number + format: double + timestamp: + type: number + format: double + required: + - value + - timestamp + type: object + Record_Partial_MetricName_.MetricValue-Array_: + properties: + cpu: + items: + $ref: '#/components/schemas/MetricValue' + type: array + memory: + items: + $ref: '#/components/schemas/MetricValue' + type: array + rate_egress: + items: + $ref: '#/components/schemas/MetricValue' + type: array + total_egress: + items: + $ref: '#/components/schemas/MetricValue' + type: array + active_connections: + items: + $ref: '#/components/schemas/MetricValue' + type: array + type: object + description: Construct a type with a set of properties K of type T + MetricsResponse: + $ref: '#/components/schemas/Record_Partial_MetricName_.MetricValue-Array_' + MetricName: + type: string + enum: + - cpu + - memory + - rate_egress + - total_egress + - active_connections + description: Available metrics to query over time. + MetricsStep: + type: integer + format: int32 + default: '60' + description: Width of time in seconds to group data. + ExposedPort: + properties: + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: integer + format: int32 + host: + type: string + name: + type: string + required: + - transportType + - port + - host + - name + type: object + example: + host: 1.proxy.hathora.dev + name: default + port: 34567 + transportType: tcp + description: Connection details for an active process. + Process: + properties: + egressedBytes: + type: integer + format: int32 + description: Measures network traffic leaving the process in bytes. + example: 435 + idleSince: + type: string + format: date-time + nullable: true + deprecated: true + activeConnectionsUpdatedAt: + type: string + format: date-time + deprecated: true + activeConnections: + type: integer + format: int32 + description: Tracks the number of active connections to a process. + example: 10 + deprecated: true + roomsAllocatedUpdatedAt: + type: string + format: date-time + roomsAllocated: + type: integer + format: int32 + description: Tracks the number of rooms that have been allocated to the process. + example: 1 + roomSlotsAvailableUpdatedAt: + type: string + format: date-time + deprecated: true + roomSlotsAvailable: + type: number + format: double + deprecated: true + draining: + type: boolean + description: Process in drain will not accept any new rooms. + terminatedAt: + type: string + format: date-time + nullable: true + description: When the process has been terminated. + stoppingAt: + type: string + format: date-time + nullable: true + description: >- + When the process is issued to stop. We use this to determine when we + should stop billing. + startedAt: + type: string + format: date-time + nullable: true + description: >- + When the process bound to the specified port. We use this to + determine when we should start billing. + startingAt: + type: string + format: date-time + description: When the process started being provisioned. + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + allOf: + - $ref: '#/components/schemas/ExposedPort' + nullable: true + port: + type: number + format: double + deprecated: true + host: + type: string + deprecated: true + region: + $ref: '#/components/schemas/Region' + processId: + $ref: '#/components/schemas/ProcessId' + deploymentId: + $ref: '#/components/schemas/DeploymentId' + appId: + $ref: '#/components/schemas/AppId' + required: + - egressedBytes + - idleSince + - activeConnectionsUpdatedAt + - activeConnections + - roomsAllocatedUpdatedAt + - roomsAllocated + - roomSlotsAvailableUpdatedAt + - roomSlotsAvailable + - draining + - terminatedAt + - stoppingAt + - startedAt + - startingAt + - roomsPerProcess + - additionalExposedPorts + - exposedPort + - port + - host + - region + - processId + - deploymentId + - appId + type: object + description: >- + A process object represents a runtime instance of your game server and + its metadata. + RoomStatus: + type: string + enum: + - scheduling + - active + - suspended + - destroyed + example: active + description: >- + The allocation status of a room. + + + `scheduling`: a process is not allocated yet and the room is waiting to + be scheduled + + + `active`: ready to accept connections + + + `suspended`: room is unallocated from the process but can be rescheduled + later with the same `roomId` + + + `destroyed`: all associated metadata is deleted + RoomAllocationId: + type: string + example: e3a0aa32-1711-4036-acfa-008b96061a78 + description: System generated unique identifier to an allocated instance of a room. + RoomAllocation: + properties: + unscheduledAt: + type: string + format: date-time + nullable: true + scheduledAt: + type: string + format: date-time + processId: + $ref: '#/components/schemas/ProcessId' + roomAllocationId: + $ref: '#/components/schemas/RoomAllocationId' + required: + - unscheduledAt + - scheduledAt + - processId + - roomAllocationId + type: object + description: Metadata on an allocated instance of a room. + Pick_Room.Exclude_keyofRoom.allocations__: + properties: + appId: + $ref: '#/components/schemas/AppId' + roomId: + $ref: '#/components/schemas/RoomId' + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + status: + $ref: '#/components/schemas/RoomStatus' + currentAllocation: + allOf: + - $ref: '#/components/schemas/RoomAllocation' + nullable: true + required: + - appId + - roomId + - roomConfig + - status + - currentAllocation + type: object + description: From T, pick a set of properties whose keys are in the union K + Omit_Room.allocations_: + $ref: '#/components/schemas/Pick_Room.Exclude_keyofRoom.allocations__' + description: Construct a type with the properties of T except for those in type K. + RoomWithoutAllocations: + $ref: '#/components/schemas/Omit_Room.allocations_' + ProcessWithRooms: + allOf: + - $ref: '#/components/schemas/Process' + - properties: + rooms: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + totalRooms: + type: integer + format: int32 + required: + - rooms + - totalRooms + type: object + ProcessStatus: + type: string + enum: + - starting + - running + - draining + - stopping + - stopped + - failed + ProcessV2: + properties: + status: + $ref: '#/components/schemas/ProcessStatus' + description: Process in drain will not accept any new rooms. + roomsAllocated: + type: integer + format: int32 + description: Tracks the number of rooms that have been allocated to the process. + example: 1 + terminatedAt: + type: string + format: date-time + nullable: true + description: When the process has been terminated. + stoppingAt: + type: string + format: date-time + nullable: true + description: >- + When the process is issued to stop. We use this to determine when we + should stop billing. + startedAt: + type: string + format: date-time + nullable: true + description: >- + When the process bound to the specified port. We use this to + determine when we should start billing. + createdAt: + type: string + format: date-time + description: When the process started being provisioned. + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + allOf: + - $ref: '#/components/schemas/ExposedPort' + nullable: true + region: + $ref: '#/components/schemas/Region' + processId: + $ref: '#/components/schemas/ProcessId' + deploymentId: + $ref: '#/components/schemas/DeploymentId' + appId: + $ref: '#/components/schemas/AppId' + required: + - status + - roomsAllocated + - terminatedAt + - stoppingAt + - startedAt + - createdAt + - roomsPerProcess + - additionalExposedPorts + - exposedPort + - region + - processId + - deploymentId + - appId + type: object + CreateRoomParams: + properties: + roomConfig: + $ref: '#/components/schemas/RoomConfig' + region: + $ref: '#/components/schemas/Region' + required: + - region + type: object + Room: + properties: + currentAllocation: + allOf: + - $ref: '#/components/schemas/RoomAllocation' + nullable: true + status: + $ref: '#/components/schemas/RoomStatus' + allocations: + items: + $ref: '#/components/schemas/RoomAllocation' + type: array + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + roomId: + $ref: '#/components/schemas/RoomId' + appId: + $ref: '#/components/schemas/AppId' + required: + - currentAllocation + - status + - allocations + - roomConfig + - roomId + - appId + type: object + description: A room object represents a game session or match. + StartingConnectionInfo: + properties: + status: + type: string + enum: + - starting + nullable: false + roomId: + $ref: '#/components/schemas/RoomId' + required: + - status + - roomId + type: object + ActiveConnectionInfo: + properties: + status: + type: string + enum: + - active + nullable: false + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: number + format: double + host: + type: string + roomId: + $ref: '#/components/schemas/RoomId' + required: + - status + - transportType + - port + - host + - roomId + type: object + ConnectionInfo: + anyOf: + - $ref: '#/components/schemas/StartingConnectionInfo' + - $ref: '#/components/schemas/ActiveConnectionInfo' + description: Connection information to the default port. + ConnectionInfoV2: + properties: + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + $ref: '#/components/schemas/ExposedPort' + status: + type: string + enum: + - starting + - active + description: >- + `exposedPort` will only be available when the `status` of a room is + "active". + example: active + roomId: + $ref: '#/components/schemas/RoomId' + required: + - additionalExposedPorts + - status + - roomId + type: object + description: Connection information for the default and additional ports. + CreateRoomResponse: + allOf: + - $ref: '#/components/schemas/ConnectionInfoV2' + - properties: + processId: + $ref: '#/components/schemas/ProcessId' + required: + - processId + type: object + UpdateRoomConfigParams: + properties: + roomConfig: + $ref: '#/components/schemas/RoomConfig' + required: + - roomConfig + type: object + OrgTokenId: + type: string + example: org-token-af469a92-5b45-4565-b3c4-b79878de67d2 + description: System generated unique identifier for an organization token. + OrgTokenName: + type: string + example: ci-token + description: Readable name for a token. Must be unique within an organization. + maxLength: 64 + OrgTokenStatus: + type: string + enum: + - active + - revoked + OrgToken: + properties: + createdAt: + type: string + format: date-time + createdBy: + type: string + lastFourCharsOfKey: + type: string + status: + $ref: '#/components/schemas/OrgTokenStatus' + name: + $ref: '#/components/schemas/OrgTokenName' + orgId: + type: string + orgTokenId: + $ref: '#/components/schemas/OrgTokenId' + required: + - createdAt + - createdBy + - lastFourCharsOfKey + - status + - name + - orgId + - orgTokenId + type: object + ListOrgTokens: + properties: + tokens: + items: + $ref: '#/components/schemas/OrgToken' + type: array + required: + - tokens + type: object + CreatedOrgToken: + properties: + plainTextToken: + type: string + orgToken: + $ref: '#/components/schemas/OrgToken' + required: + - plainTextToken + - orgToken + type: object + CreateOrgToken: + properties: + name: + $ref: '#/components/schemas/OrgTokenName' + required: + - name + type: object + securitySchemes: + hathoraDevToken: + type: http + scheme: bearer + bearerFormat: JWT + playerAuth: + type: http + scheme: bearer + bearerFormat: JWT + info: + title: Hathora Cloud API + version: 0.0.1 + description: >- + Welcome to the Hathora Cloud API documentation! Learn how to use the Hathora + Cloud APIs to build and scale your game servers globally. + contact: {} + openapi: 3.0.0 + paths: + /apps/v1/list: + get: + operationId: GetApps + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/ApplicationWithLatestDeploymentAndBuild' + type: array + description: >- + Returns an unsorted list of your organization’s + [applications](https://hathora.dev/docs/concepts/hathora-entities#application). + An application is uniquely identified by an `appId`. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: [] + /apps/v1/create: + post: + operationId: CreateApp + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppConfig' + /apps/v1/update/{appId}: + post: + operationId: UpdateApp + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Update data for an existing + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppConfig' + /apps/v1/info/{appId}: + get: + operationId: GetAppInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /apps/v1/delete/{appId}: + delete: + operationId: DeleteApp + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Delete an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. Your organization will lose access to this application. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /auth/v1/{appId}/login/anonymous: + post: + operationId: LoginAnonymous + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Returns a unique player token for an anonymous user. + tags: + - AuthV1 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /auth/v1/{appId}/login/nickname: + post: + operationId: LoginNickname + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Returns a unique player token with a specified nickname for a user. + tags: + - AuthV1 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LoginNicknameRequest' + /auth/v1/{appId}/login/google: + post: + operationId: LoginGoogle + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Returns a unique player token using a Google-signed OIDC `idToken`. + tags: + - AuthV1 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LoginGoogleRequest' + /billing/v1/balance: + get: + operationId: GetBalance + responses: + '200': + description: Ok + content: + application/json: + schema: + type: number + format: double + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + /billing/v1/paymentmethod: + get: + operationId: GetPaymentMethod + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/PaymentMethod' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + /billing/v1/customerportalurl: + post: + operationId: InitStripeCustomerPortalUrl + responses: + '200': + description: Ok + content: + application/json: + schema: + type: string + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CustomerPortalUrl' + /billing/v1/invoices: + get: + operationId: GetInvoices + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Invoice' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + /builds/v1/{appId}/list: + get: + operationId: GetBuilds + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Build' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns an array of + [builds](https://hathora.dev/docs/concepts/hathora-entities#build) for + an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /builds/v1/{appId}/info/{buildId}: + get: + operationId: GetBuildInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Build' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [build](https://hathora.dev/docs/concepts/hathora-entities#build). + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + /builds/v1/{appId}/create: + post: + operationId: CreateBuild + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Build' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Creates a new + [build](https://hathora.dev/docs/concepts/hathora-entities#build). + Responds with a `buildId` that you must pass to + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + to build the game server artifact. You can optionally pass in a + `buildTag` to associate an external version with a build. + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateBuildParams' + /builds/v1/{appId}/run/{buildId}: + post: + operationId: RunBuild + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Builds a game server artifact from a tarball you provide. Pass in the + `buildId` generated from + [`CreateBuild()`](https://hathora.dev/api#tag/BuildV1/operation/CreateBuild). + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + requestBody: + required: true + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + required: + - file + /builds/v1/{appId}/delete/{buildId}: + delete: + operationId: DeleteBuild + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Delete a + [build](https://hathora.dev/docs/concepts/hathora-entities#build). All + associated metadata is deleted. + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + /deployments/v1/{appId}/list: + get: + operationId: GetDeployments + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Deployment' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns an array of + [deployments](https://hathora.dev/docs/concepts/hathora-entities#deployment) + for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /deployments/v1/{appId}/latest: + get: + operationId: GetLatestDeployment + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get the latest + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) + for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /deployments/v1/{appId}/info/{deploymentId}: + get: + operationId: GetDeploymentInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment). + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: deploymentId + required: true + schema: + $ref: '#/components/schemas/DeploymentId' + /deployments/v1/{appId}/create/{buildId}: + post: + operationId: CreateDeployment + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment). + Creating a new deployment means all new rooms created will use the + latest deployment configuration, but existing games in progress will not + be affected. + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentConfig' + /discovery/v1/ping: + get: + operationId: GetPingServiceEndpoints + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/DiscoveryResponse' + description: >- + Returns an array of all regions with a host and port that a client can + directly ping. Open a websocket connection to `wss://:/ws` + and send a packet. To calculate ping, measure the time it takes to get + an echo packet back. + tags: + - DiscoveryV1 + security: [] + parameters: [] + /lobby/v1/{appId}/create/private: + post: + operationId: CreatePrivateLobbyDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV1 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + - in: query + name: local + required: false + schema: + default: false + type: boolean + /lobby/v1/{appId}/create/public: + post: + operationId: CreatePublicLobbyDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV1 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + - in: query + name: local + required: false + schema: + default: false + type: boolean + /lobby/v1/{appId}/list: + get: + operationId: ListActivePublicLobbiesDeprecatedV1 + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Lobby' + type: array + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV1 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: local + required: false + schema: + default: false + type: boolean + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /lobby/v2/{appId}/create/private: + post: + operationId: CreatePrivateLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + /lobby/v2/{appId}/create/public: + post: + operationId: CreatePublicLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + /lobby/v2/{appId}/create/local: + post: + operationId: CreateLocalLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + /lobby/v2/{appId}/create: + post: + operationId: CreateLobbyDeprecated + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new lobby for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + A lobby object is a wrapper around a + [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. + With a lobby, you get additional functionality like configuring the + visibility of the room, managing the state of a match, and retrieving a + list of public lobbies to display to players. + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateLobbyParams' + /lobby/v2/{appId}/list/public: + get: + operationId: ListActivePublicLobbiesDeprecatedV2 + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Lobby' + type: array + description: >- + Get all active lobbies for a an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter by optionally passing in a `region`. Use this endpoint to display + all public lobbies that a player can join in the game client. + tags: + - LobbyV2 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - description: >- + Region to filter by. If omitted, active public lobbies in all + regions will be returned. + in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /lobby/v2/{appId}/info/{roomId}: + get: + operationId: GetLobbyInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Get details for a lobby. + tags: + - LobbyV2 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /lobby/v2/{appId}/setState/{roomId}: + post: + operationId: SetLobbyState + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Set the state of a lobby. State is intended to be set by the server and + must be smaller than 1MB. Use this endpoint to store match data like + live player count to enforce max number of clients or persist end-game + data (i.e. winner or final scores). + tags: + - LobbyV2 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SetLobbyStateParams' + /lobby/v3/{appId}/create: + post: + operationId: CreateLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new lobby for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + A lobby object is a wrapper around a + [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. + With a lobby, you get additional functionality like configuring the + visibility of the room, managing the state of a match, and retrieving a + list of public lobbies to display to players. + tags: + - LobbyV3 + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: shortCode + required: false + schema: + $ref: '#/components/schemas/ShortCode' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateLobbyV3Params' + /lobby/v3/{appId}/list/public: + get: + operationId: ListActivePublicLobbies + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/LobbyV3' + type: array + description: >- + Get all active lobbies for a given + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. Use this endpoint + to display all public lobbies that a player can join in the game client. + tags: + - LobbyV3 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - description: If omitted, active public lobbies in all regions will be returned. + in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /lobby/v3/{appId}/info/roomid/{roomId}: + get: + operationId: GetLobbyInfoByRoomId + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Get details for a lobby. + tags: + - LobbyV3 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /lobby/v3/{appId}/info/shortcode/{shortCode}: + get: + operationId: GetLobbyInfoByShortCode + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a lobby. If 2 or more lobbies have the same `shortCode`, + then the most recently created lobby will be returned. + tags: + - LobbyV3 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: shortCode + required: true + schema: + $ref: '#/components/schemas/ShortCode' + /logs/v1/{appId}/all: + get: + operationId: GetLogsForApp + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns a stream of logs for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + tags: + - LogV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /logs/v1/{appId}/process/{processId}: + get: + operationId: GetLogsForProcess + responses: + '200': + description: Ok + content: + application/octet-stream: + schema: + type: string + format: byte + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '410': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns a stream of logs for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + using `appId` and `processId`. + tags: + - LogV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + /logs/v1/{appId}/process/{processId}/download: + get: + operationId: DownloadLogForProcess + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '410': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Download entire log file for a stopped process. + tags: + - LogV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /logs/v1/{appId}/deployment/{deploymentId}: + get: + operationId: GetLogsForDeployment + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns a stream of logs for a + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) + using `appId` and `deploymentId`. + tags: + - LogV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: deploymentId + required: true + schema: + $ref: '#/components/schemas/DeploymentId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + /management/v1/sendverificationemail: + post: + operationId: SendVerificationEmail + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/VerificationEmailResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - ManagementV1 + security: [] + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/VerificationEmailRequest' + /metrics/v1/{appId}/process/{processId}: + get: + operationId: GetMetrics + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/MetricsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get metrics for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + using `appId` and `processId`. + tags: + - MetricsV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + - description: Available metrics to query over time. + in: query + name: metrics + required: false + schema: + default: + - cpu + - memory + - rate_egress + type: array + items: + $ref: '#/components/schemas/MetricName' + - description: Unix timestamp. Default is current time. + in: query + name: end + required: false + schema: + format: double + type: number + - description: Unix timestamp. Default is -1 hour from `end`. + in: query + name: start + required: false + schema: + format: double + type: number + - in: query + name: step + required: false + schema: + $ref: '#/components/schemas/MetricsStep' + /processes/v1/{appId}/list/running: + get: + operationId: GetRunningProcesses + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/ProcessWithRooms' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retrieve 10 most recently started + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. + tags: + - ProcessesV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /processes/v1/{appId}/list/stopped: + get: + operationId: GetStoppedProcesses + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Process' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retrieve 10 most recently stopped + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. + tags: + - ProcessesV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /processes/v1/{appId}/info/{processId}: + get: + operationId: GetProcessInfoDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Process' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - ProcessesV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /processes/v2/{appId}/info/{processId}: + get: + operationId: GetProcessInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessV2' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /processes/v2/{appId}/list/latest: + get: + operationId: GetLatestProcesses + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/ProcessV2' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retrieve the 10 most recent + [processes](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `status` or `region`. + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: status + required: false + schema: + type: array + items: + $ref: '#/components/schemas/ProcessStatus' + - in: query + name: region + required: false + schema: + type: array + items: + $ref: '#/components/schemas/Region' + /processes/v2/{appId}/stop/{processId}: + post: + operationId: StopProcess + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Stops a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + immediately. + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /processes/v2/{appId}/create/{region}: + post: + operationId: CreateProcess + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessV2' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Creates a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + without a room. Use this to pre-allocate processes ahead of time so that + subsequent room assignment via + [CreateRoom()](https://hathora.dev/api#tag/RoomV2/operation/CreateRoom) + can be instant. + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: region + required: true + schema: + $ref: '#/components/schemas/Region' + /rooms/v1/{appId}/create: + post: + operationId: CreateRoomDeprecated + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomParams' + /rooms/v1/{appId}/info/{roomId}: + get: + operationId: GetRoomInfoDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Room' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v1/{appId}/list/{processId}/active: + get: + operationId: GetActiveRoomsForProcessDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v1/{appId}/list/{processId}/inactive: + get: + operationId: GetInactiveRoomsForProcessDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v1/{appId}/destroy/{roomId}: + post: + operationId: DestroyRoomDeprecated + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v1/{appId}/suspend/{roomId}: + post: + operationId: SuspendRoomDeprecated + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v1/{appId}/connectioninfo/{roomId}: + get: + operationId: GetConnectionInfoDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ConnectionInfo' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/create: + post: + operationId: CreateRoom + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new + [room](https://hathora.dev/docs/concepts/hathora-entities#room) for an + existing + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Poll the + [`GetConnectionInfo()`](https://hathora.dev/api#tag/RoomV2/operation/GetConnectionInfo) + endpoint to get connection details for an active room. + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomParams' + /rooms/v2/{appId}/info/{roomId}: + get: + operationId: GetRoomInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Room' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retreive current and historical allocation data for a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/list/{processId}/active: + get: + operationId: GetActiveRoomsForProcess + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get all active + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a + given + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v2/{appId}/list/{processId}/inactive: + get: + operationId: GetInactiveRoomsForProcess + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get all inactive + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a + given + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v2/{appId}/destroy/{roomId}: + post: + operationId: DestroyRoom + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Destroy a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). All + associated metadata is deleted. + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/suspend/{roomId}: + post: + operationId: SuspendRoom + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Suspend a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). The + room is unallocated from the process but can be rescheduled later using + the same `roomId`. + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/connectioninfo/{roomId}: + get: + operationId: GetConnectionInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ConnectionInfoV2' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Poll this endpoint to get connection details to a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). Clients + can call this endpoint without authentication. + tags: + - RoomV2 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/update/{roomId}: + post: + operationId: UpdateRoomConfig + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRoomConfigParams' + /tokens/v1/orgs/{orgId}: + get: + operationId: GetOrgTokens + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListOrgTokens' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: List all organization tokens for a given org. + tags: + - OrgTokensV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + /tokens/v1/orgs/{orgId}/create: + post: + operationId: CreateOrgToken + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedOrgToken' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Create a new organization token. + tags: + - OrgTokensV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrgToken' + /tokens/v1/orgs/{orgId}/tokens/{orgTokenId}/revoke: + post: + operationId: RevokeOrgToken + responses: + '200': + description: Ok + content: + application/json: + schema: + type: boolean + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Revoke an organization token. + tags: + - OrgTokensV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + - in: path + name: orgTokenId + required: true + schema: + $ref: '#/components/schemas/OrgId' + servers: + - url: https://api.hathora.dev + - url: / + tags: + - name: AppV1 + description: >- + Operations that allow you manage your + [applications](https://hathora.dev/docs/concepts/hathora-entities#application). + - name: AuthV1 + description: >- + Operations that allow you to generate a Hathora-signed [JSON web token + (JWT)](https://jwt.io/) for [player + authentication](https://hathora.dev/docs/lobbies-and-matchmaking/auth-service). + - name: BuildV1 + description: >- + Operations that allow you create and manage your + [builds](https://hathora.dev/docs/concepts/hathora-entities#build). + - name: DeploymentV1 + description: >- + Operations that allow you configure and manage an application's + [build](https://hathora.dev/docs/concepts/hathora-entities#build) at + runtime. + - name: DiscoveryV1 + description: >- + Service that allows clients to directly ping all Hathora regions to get + latency information + - name: LobbyV3 + description: >- + Operations to create and manage lobbies using our [Lobby + Service](https://hathora.dev/docs/lobbies-and-matchmaking/lobby-service). + - name: LogV1 + description: >- + Operations to get logs by + [applications](https://hathora.dev/docs/concepts/hathora-entities#application), + [processes](https://hathora.dev/docs/concepts/hathora-entities#process), + and + [deployments](https://hathora.dev/docs/concepts/hathora-entities#deployment). + We store 20GB of logs data. + - name: MetricsV1 + description: >- + Operations to get metrics by + [process](https://hathora.dev/docs/concepts/hathora-entities#process). We + store 72 hours of metrics data. + - name: ProcessesV2 + description: >- + Operations to get data on active and stopped + [processes](https://hathora.dev/docs/concepts/hathora-entities#process). + - name: RoomV2 + description: >- + Operations to create, manage, and connect to + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room). + - name: LobbyV1 + description: Deprecated. Use [LobbyV3](https://hathora.dev/api#tag/LobbyV3). + - name: LobbyV2 + description: Deprecated. Use [LobbyV3](https://hathora.dev/api#tag/LobbyV3). + - name: ProcessesV1 + description: Deprecated. Use [ProcessesV2](https://hathora.dev/api#tag/ProcessesV2). + - name: RoomV1 + description: Deprecated. Use [RoomV2](https://hathora.dev/api#tag/RoomV2). + x-speakeasy-globals: + parameters: + - in: path + name: appId + schema: + $ref: '#/components/schemas/AppId' +konfigCliVersion: 1.38.34 diff --git a/sdks/db/fixed-specs/hathora-fixed-spec.yaml b/sdks/db/fixed-specs/hathora-fixed-spec.yaml new file mode 100644 index 0000000000..351d4e7dbf --- /dev/null +++ b/sdks/db/fixed-specs/hathora-fixed-spec.yaml @@ -0,0 +1,4695 @@ +openapi: 3.0.0 +info: + title: Hathora Cloud API + description: >- + Welcome to the Hathora Cloud API documentation! Learn how to use the Hathora + Cloud APIs to build and scale your game servers globally. + version: 0.0.1 + contact: {} +servers: + - url: https://api.hathora.dev + - url: '' +tags: + - description: >- + Operations to create, manage, and connect to + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room). + name: RoomV2 + - description: Deprecated. Use [LobbyV3](https://hathora.dev/api#tag/LobbyV3). + name: LobbyV2 + - description: Deprecated. Use [RoomV2](https://hathora.dev/api#tag/RoomV2). + name: RoomV1 + - description: >- + Operations that allow you manage your + [applications](https://hathora.dev/docs/concepts/hathora-entities#application). + name: AppV1 + - description: >- + Operations that allow you create and manage your + [builds](https://hathora.dev/docs/concepts/hathora-entities#build). + name: BuildV1 + - description: >- + Operations that allow you configure and manage an application's + [build](https://hathora.dev/docs/concepts/hathora-entities#build) at + runtime. + name: DeploymentV1 + - description: >- + Operations to create and manage lobbies using our [Lobby + Service](https://hathora.dev/docs/lobbies-and-matchmaking/lobby-service). + name: LobbyV3 + - description: >- + Operations to get logs by + [applications](https://hathora.dev/docs/concepts/hathora-entities#application), + [processes](https://hathora.dev/docs/concepts/hathora-entities#process), + and + [deployments](https://hathora.dev/docs/concepts/hathora-entities#deployment). + We store 20GB of logs data. + name: LogV1 + - description: >- + Operations to get data on active and stopped + [processes](https://hathora.dev/docs/concepts/hathora-entities#process). + name: ProcessesV2 + - name: BillingV1 + - description: >- + Operations that allow you to generate a Hathora-signed [JSON web token + (JWT)](https://jwt.io/) for [player + authentication](https://hathora.dev/docs/lobbies-and-matchmaking/auth-service). + name: AuthV1 + - description: Deprecated. Use [LobbyV3](https://hathora.dev/api#tag/LobbyV3). + name: LobbyV1 + - description: Deprecated. Use [ProcessesV2](https://hathora.dev/api#tag/ProcessesV2). + name: ProcessesV1 + - name: OrgTokensV1 + - description: >- + Service that allows clients to directly ping all Hathora regions to get + latency information + name: DiscoveryV1 + - description: >- + Operations to get metrics by + [process](https://hathora.dev/docs/concepts/hathora-entities#process). We + store 72 hours of metrics data. + name: MetricsV1 + - name: ManagementV1 +paths: + /apps/v1/list: + get: + tags: + - AppV1 + operationId: AppV1_getAppList + security: + - hathoraDevToken: [] + description: >- + Returns an unsorted list of your organization’s + [applications](https://hathora.dev/docs/concepts/hathora-entities#application). + An application is uniquely identified by an `appId`. + parameters: [] + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/AppV1GetAppListResponse' + /apps/v1/create: + post: + tags: + - AppV1 + operationId: AppV1_createNewApplication + security: + - hathoraDevToken: [] + description: >- + Create a new + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppConfig' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /apps/v1/update/{appId}: + post: + tags: + - AppV1 + operationId: AppV1_updateApplicationData + security: + - hathoraDevToken: [] + description: >- + Update data for an existing + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppConfig' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /apps/v1/info/{appId}: + get: + tags: + - AppV1 + operationId: AppV1_getAppInfo + security: + - hathoraDevToken: [] + description: >- + Get details for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /apps/v1/delete/{appId}: + delete: + tags: + - AppV1 + operationId: AppV1_deleteApplicationById + security: + - hathoraDevToken: [] + description: >- + Delete an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. Your organization will lose access to this application. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /auth/v1/{appId}/login/anonymous: + post: + tags: + - AuthV1 + operationId: AuthV1_generatePlayerToken + security: [] + description: Returns a unique player token for an anonymous user. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /auth/v1/{appId}/login/nickname: + post: + tags: + - AuthV1 + operationId: AuthV1_generateUniquePlayerToken + security: [] + description: Returns a unique player token with a specified nickname for a user. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LoginNicknameRequest' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /auth/v1/{appId}/login/google: + post: + tags: + - AuthV1 + operationId: AuthV1_getUniquePlayerToken + security: [] + description: Returns a unique player token using a Google-signed OIDC `idToken`. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LoginGoogleRequest' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /billing/v1/balance: + get: + tags: + - BillingV1 + operationId: BillingV1_getBalance + security: + - hathoraDevToken: [] + parameters: [] + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/BillingV1GetBalanceResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /billing/v1/paymentmethod: + get: + tags: + - BillingV1 + operationId: BillingV1_getPaymentMethod + security: + - hathoraDevToken: [] + parameters: [] + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: >- + #/components/schemas/Partial__card-CardPaymentMethod--ach-AchPaymentMethod--link-LinkPaymentMethod--__ + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /billing/v1/customerportalurl: + post: + tags: + - BillingV1 + operationId: BillingV1_createCustomerPortalUrl + security: + - hathoraDevToken: [] + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CustomerPortalUrl' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/BillingV1CreateCustomerPortalUrlResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /billing/v1/invoices: + get: + tags: + - BillingV1 + operationId: BillingV1_listInvoices + security: + - hathoraDevToken: [] + parameters: [] + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/BillingV1ListInvoicesResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /builds/v1/{appId}/list: + get: + tags: + - BuildV1 + operationId: BuildV1_getApplicationBuilds + security: + - hathoraDevToken: [] + description: >- + Returns an array of + [builds](https://hathora.dev/docs/concepts/hathora-entities#build) for + an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/BuildV1GetApplicationBuildsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /builds/v1/{appId}/info/{buildId}: + get: + tags: + - BuildV1 + operationId: BuildV1_getApplicationInfo + security: + - hathoraDevToken: [] + description: >- + Get details for a + [build](https://hathora.dev/docs/concepts/hathora-entities#build). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Build' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /builds/v1/{appId}/create: + post: + tags: + - BuildV1 + operationId: BuildV1_createBuild + security: + - hathoraDevToken: [] + description: >- + Creates a new + [build](https://hathora.dev/docs/concepts/hathora-entities#build). + Responds with a `buildId` that you must pass to + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + to build the game server artifact. You can optionally pass in a + `buildTag` to associate an external version with a build. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateBuildParams' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Build' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /builds/v1/{appId}/run/{buildId}: + post: + tags: + - BuildV1 + operationId: BuildV1_buildServerArtifact + security: + - hathoraDevToken: [] + description: >- + Builds a game server artifact from a tarball you provide. Pass in the + `buildId` generated from + [`CreateBuild()`](https://hathora.dev/api#tag/BuildV1/operation/CreateBuild). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + requestBody: + required: true + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/BuildV1BuildServerArtifactRequest' + responses: + '200': + description: Ok + content: + text/plain: + schema: + $ref: '#/components/schemas/BuildV1BuildServerArtifactResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /builds/v1/{appId}/delete/{buildId}: + delete: + tags: + - BuildV1 + operationId: BuildV1_deleteBuildById + security: + - hathoraDevToken: [] + description: >- + Delete a + [build](https://hathora.dev/docs/concepts/hathora-entities#build). All + associated metadata is deleted. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /deployments/v1/{appId}/list: + get: + tags: + - DeploymentV1 + operationId: DeploymentV1_listDeploymentsByAppId + security: + - hathoraDevToken: [] + description: >- + Returns an array of + [deployments](https://hathora.dev/docs/concepts/hathora-entities#deployment) + for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: >- + #/components/schemas/DeploymentV1ListDeploymentsByAppIdResponse + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /deployments/v1/{appId}/latest: + get: + tags: + - DeploymentV1 + operationId: DeploymentV1_getLatestDeploymentByAppId + security: + - hathoraDevToken: [] + description: >- + Get the latest + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) + for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /deployments/v1/{appId}/info/{deploymentId}: + get: + tags: + - DeploymentV1 + operationId: DeploymentV1_getInfo + security: + - hathoraDevToken: [] + description: >- + Get details for a + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: deploymentId + required: true + schema: + $ref: '#/components/schemas/DeploymentId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /deployments/v1/{appId}/create/{buildId}: + post: + tags: + - DeploymentV1 + operationId: DeploymentV1_createNewDeployment + security: + - hathoraDevToken: [] + description: >- + Create a new + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment). + Creating a new deployment means all new rooms created will use the + latest deployment configuration, but existing games in progress will not + be affected. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentConfig' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /discovery/v1/ping: + get: + tags: + - DiscoveryV1 + operationId: DiscoveryV1_getEndpoints + security: [] + description: >- + Returns an array of all regions with a host and port that a client can + directly ping. Open a websocket connection to `wss://:/ws` + and send a packet. To calculate ping, measure the time it takes to get + an echo packet back. + parameters: [] + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/DiscoveryResponse' + /lobby/v1/{appId}/create/private: + post: + tags: + - LobbyV1 + operationId: LobbyV1_createPrivateLobby + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + - in: query + name: local + required: false + schema: + default: false + type: boolean + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /lobby/v1/{appId}/create/public: + post: + tags: + - LobbyV1 + operationId: LobbyV1_createPublicLobby + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + - in: query + name: local + required: false + schema: + default: false + type: boolean + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /lobby/v1/{appId}/list: + get: + tags: + - LobbyV1 + operationId: LobbyV1_listLobbiesByAppId + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: local + required: false + schema: + default: false + type: boolean + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV1ListLobbiesByAppIdResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /lobby/v2/{appId}/create/private: + post: + tags: + - LobbyV2 + operationId: LobbyV2_createPrivateLobby + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV2CreatePrivateLobbyRequest' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /lobby/v2/{appId}/create/public: + post: + tags: + - LobbyV2 + operationId: LobbyV2_createPublicLobby + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV2CreatePublicLobbyRequest' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /lobby/v2/{appId}/create/local: + post: + tags: + - LobbyV2 + operationId: LobbyV2_createLocalLobby + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV2CreateLocalLobbyRequest' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /lobby/v2/{appId}/create: + post: + tags: + - LobbyV2 + operationId: LobbyV2_createLobby + security: + - playerAuth: [] + description: >- + Create a new lobby for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + A lobby object is a wrapper around a + [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. + With a lobby, you get additional functionality like configuring the + visibility of the room, managing the state of a match, and retrieving a + list of public lobbies to display to players. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateLobbyParams' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /lobby/v2/{appId}/list/public: + get: + tags: + - LobbyV2 + operationId: LobbyV2_listPublicLobbies + security: [] + description: >- + Get all active lobbies for a an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter by optionally passing in a `region`. Use this endpoint to display + all public lobbies that a player can join in the game client. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - description: >- + Region to filter by. If omitted, active public lobbies in all + regions will be returned. + in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV2ListPublicLobbiesResponse' + deprecated: true + /lobby/v2/{appId}/info/{roomId}: + get: + tags: + - LobbyV2 + operationId: LobbyV2_getLobbyDetails + security: [] + description: Get details for a lobby. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /lobby/v2/{appId}/setState/{roomId}: + post: + tags: + - LobbyV2 + operationId: LobbyV2_setLobbyState + security: + - hathoraDevToken: [] + description: >- + Set the state of a lobby. State is intended to be set by the server and + must be smaller than 1MB. Use this endpoint to store match data like + live player count to enforce max number of clients or persist end-game + data (i.e. winner or final scores). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SetLobbyStateParams' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /lobby/v3/{appId}/create: + post: + tags: + - LobbyV3 + operationId: LobbyV3_createNewLobby + security: + - playerAuth: [] + description: >- + Create a new lobby for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + A lobby object is a wrapper around a + [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. + With a lobby, you get additional functionality like configuring the + visibility of the room, managing the state of a match, and retrieving a + list of public lobbies to display to players. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: shortCode + required: false + schema: + $ref: '#/components/schemas/ShortCode' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateLobbyV3Params' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /lobby/v3/{appId}/list/public: + get: + tags: + - LobbyV3 + operationId: LobbyV3_listPublicLobbies + security: [] + description: >- + Get all active lobbies for a given + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. Use this endpoint + to display all public lobbies that a player can join in the game client. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - description: If omitted, active public lobbies in all regions will be returned. + in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3ListPublicLobbiesResponse' + /lobby/v3/{appId}/info/roomid/{roomId}: + get: + tags: + - LobbyV3 + operationId: LobbyV3_getLobbyDetails + security: [] + description: Get details for a lobby. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /lobby/v3/{appId}/info/shortcode/{shortCode}: + get: + tags: + - LobbyV3 + operationId: LobbyV3_getInfoByShortCode + security: [] + description: >- + Get details for a lobby. If 2 or more lobbies have the same `shortCode`, + then the most recently created lobby will be returned. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: shortCode + required: true + schema: + $ref: '#/components/schemas/ShortCode' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /logs/v1/{appId}/all: + get: + tags: + - LogV1 + operationId: LogV1_getAllLogs + security: + - hathoraDevToken: [] + description: >- + Returns a stream of logs for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + responses: + '200': + description: Ok + content: + text/plain: + schema: + $ref: '#/components/schemas/LogV1GetAllLogsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /logs/v1/{appId}/process/{processId}: + get: + tags: + - LogV1 + operationId: LogV1_streamLogsForProcess + security: + - hathoraDevToken: [] + description: >- + Returns a stream of logs for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + using `appId` and `processId`. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + responses: + '200': + description: Ok + content: + application/octet-stream: + schema: + $ref: '#/components/schemas/LogV1StreamLogsForProcessResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '410': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /logs/v1/{appId}/process/{processId}/download: + get: + tags: + - LogV1 + operationId: LogV1_downloadLogForProcess + security: + - hathoraDevToken: [] + description: Download entire log file for a stopped process. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + responses: + '200': + description: Ok + content: + text/plain: + schema: + $ref: '#/components/schemas/LogV1DownloadLogForProcessResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '410': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /logs/v1/{appId}/deployment/{deploymentId}: + get: + tags: + - LogV1 + operationId: LogV1_getLogStream + security: + - hathoraDevToken: [] + description: >- + Returns a stream of logs for a + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) + using `appId` and `deploymentId`. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: deploymentId + required: true + schema: + $ref: '#/components/schemas/DeploymentId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + responses: + '200': + description: Ok + content: + text/plain: + schema: + $ref: '#/components/schemas/LogV1GetLogStreamResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /management/v1/sendverificationemail: + post: + tags: + - ManagementV1 + operationId: ManagementV1_sendVerificationEmail + security: [] + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/VerificationEmailRequest' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/VerificationEmailResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /metrics/v1/{appId}/process/{processId}: + get: + tags: + - MetricsV1 + operationId: MetricsV1_getProcessMetrics + security: + - hathoraDevToken: [] + description: >- + Get metrics for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + using `appId` and `processId`. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + - description: Available metrics to query over time. + in: query + name: metrics + required: false + schema: + default: + - cpu + - memory + - rate_egress + type: array + items: + $ref: '#/components/schemas/MetricName' + - description: Unix timestamp. Default is current time. + in: query + name: end + required: false + schema: + format: double + type: number + - description: Unix timestamp. Default is -1 hour from `end`. + in: query + name: start + required: false + schema: + format: double + type: number + - in: query + name: step + required: false + schema: + $ref: '#/components/schemas/MetricsStep' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: >- + #/components/schemas/Record_Partial_MetricName_.MetricValue-Array_ + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /processes/v1/{appId}/list/running: + get: + tags: + - ProcessesV1 + operationId: ProcessesV1_listRunningProcesses + security: + - hathoraDevToken: [] + description: >- + Retrieve 10 most recently started + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessesV1ListRunningProcessesResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /processes/v1/{appId}/list/stopped: + get: + tags: + - ProcessesV1 + operationId: ProcessesV1_getRecentlyStoppedProcesses + security: + - hathoraDevToken: [] + description: >- + Retrieve 10 most recently stopped + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: >- + #/components/schemas/ProcessesV1GetRecentlyStoppedProcessesResponse + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /processes/v1/{appId}/info/{processId}: + get: + tags: + - ProcessesV1 + operationId: ProcessesV1_getProcessInfo + security: + - hathoraDevToken: [] + description: >- + Get details for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Process' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /processes/v2/{appId}/info/{processId}: + get: + tags: + - ProcessesV2 + operationId: ProcessesV2_getProcessInfo + security: + - hathoraDevToken: [] + description: >- + Get details for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessV2' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /processes/v2/{appId}/list/latest: + get: + tags: + - ProcessesV2 + operationId: ProcessesV2_getLatestProcessesList + security: + - hathoraDevToken: [] + description: >- + Retrieve the 10 most recent + [processes](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `status` or `region`. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: status + required: false + schema: + type: array + items: + $ref: '#/components/schemas/ProcessStatus' + - in: query + name: region + required: false + schema: + type: array + items: + $ref: '#/components/schemas/Region' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessesV2GetLatestProcessesListResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /processes/v2/{appId}/stop/{processId}: + post: + tags: + - ProcessesV2 + operationId: ProcessesV2_stopProcessById + security: + - hathoraDevToken: [] + description: >- + Stops a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + immediately. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /processes/v2/{appId}/create/{region}: + post: + tags: + - ProcessesV2 + operationId: ProcessesV2_createProcessWithoutRoom + security: + - hathoraDevToken: [] + description: >- + Creates a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + without a room. Use this to pre-allocate processes ahead of time so that + subsequent room assignment via + [CreateRoom()](https://hathora.dev/api#tag/RoomV2/operation/CreateRoom) + can be instant. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: region + required: true + schema: + $ref: '#/components/schemas/Region' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessV2' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /rooms/v1/{appId}/create: + post: + tags: + - RoomV1 + operationId: RoomV1_createRoom + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomParams' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /rooms/v1/{appId}/info/{roomId}: + get: + tags: + - RoomV1 + operationId: RoomV1_getRoomInfo + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Room' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /rooms/v1/{appId}/list/{processId}/active: + get: + tags: + - RoomV1 + operationId: RoomV1_getActiveRooms + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomV1GetActiveRoomsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /rooms/v1/{appId}/list/{processId}/inactive: + get: + tags: + - RoomV1 + operationId: RoomV1_getInactiveRooms + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomV1GetInactiveRoomsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /rooms/v1/{appId}/destroy/{roomId}: + post: + tags: + - RoomV1 + operationId: RoomV1_destroyRoom + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /rooms/v1/{appId}/suspend/{roomId}: + post: + tags: + - RoomV1 + operationId: RoomV1_suspendRoom + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /rooms/v1/{appId}/connectioninfo/{roomId}: + get: + tags: + - RoomV1 + operationId: RoomV1_getConnectionInfo + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ConnectionInfo' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + deprecated: true + /rooms/v2/{appId}/create: + post: + tags: + - RoomV2 + operationId: RoomV2_createRoom + security: + - hathoraDevToken: [] + description: >- + Create a new + [room](https://hathora.dev/docs/concepts/hathora-entities#room) for an + existing + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Poll the + [`GetConnectionInfo()`](https://hathora.dev/api#tag/RoomV2/operation/GetConnectionInfo) + endpoint to get connection details for an active room. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomParams' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /rooms/v2/{appId}/info/{roomId}: + get: + tags: + - RoomV2 + operationId: RoomV2_getAllocationData + security: + - hathoraDevToken: [] + description: >- + Retreive current and historical allocation data for a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Room' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /rooms/v2/{appId}/list/{processId}/active: + get: + tags: + - RoomV2 + operationId: RoomV2_listActiveRooms + security: + - hathoraDevToken: [] + description: >- + Get all active + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a + given + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomV2ListActiveRoomsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /rooms/v2/{appId}/list/{processId}/inactive: + get: + tags: + - RoomV2 + operationId: RoomV2_listInactiveRooms + security: + - hathoraDevToken: [] + description: >- + Get all inactive + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a + given + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomV2ListInactiveRoomsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /rooms/v2/{appId}/destroy/{roomId}: + post: + tags: + - RoomV2 + operationId: RoomV2_destroyRoomAllocation + security: + - hathoraDevToken: [] + description: >- + Destroy a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). All + associated metadata is deleted. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /rooms/v2/{appId}/suspend/{roomId}: + post: + tags: + - RoomV2 + operationId: RoomV2_suspendRoomAllocation + security: + - hathoraDevToken: [] + description: >- + Suspend a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). The + room is unallocated from the process but can be rescheduled later using + the same `roomId`. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /rooms/v2/{appId}/connectioninfo/{roomId}: + get: + tags: + - RoomV2 + operationId: RoomV2_getConnectionInfo + security: [] + description: >- + Poll this endpoint to get connection details to a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). Clients + can call this endpoint without authentication. + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ConnectionInfoV2' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /rooms/v2/{appId}/update/{roomId}: + post: + tags: + - RoomV2 + operationId: RoomV2_updateRoomAllocation + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRoomConfigParams' + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /tokens/v1/orgs/{orgId}: + get: + tags: + - OrgTokensV1 + operationId: OrgTokensV1_listOrgTokens + security: + - hathoraDevToken: [] + description: List all organization tokens for a given org. + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListOrgTokens' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /tokens/v1/orgs/{orgId}/create: + post: + tags: + - OrgTokensV1 + operationId: OrgTokensV1_createNewOrgToken + security: + - hathoraDevToken: [] + description: Create a new organization token. + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrgToken' + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedOrgToken' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + /tokens/v1/orgs/{orgId}/tokens/{orgTokenId}/revoke: + post: + tags: + - OrgTokensV1 + operationId: OrgTokensV1_revokeOrgToken + security: + - hathoraDevToken: [] + description: Revoke an organization token. + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + - in: path + name: orgTokenId + required: true + schema: + $ref: '#/components/schemas/OrgId' + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/OrgTokensV1RevokeOrgTokenResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' +components: + parameters: {} + responses: {} + examples: {} + headers: {} + requestBodies: {} + schemas: + AppName: + description: Readable name for an application. Must be unique within an organization. + type: string + example: minecraft + maxLength: 64 + pattern: ^[a-z0-9-]+$ + AppId: + description: System generated unique identifier for an application. + type: string + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + Record_string.never_: + description: Construct a type with a set of properties K of type T + properties: {} + type: object + AuthConfiguration: + description: >- + Configure [player + authentication](https://hathora.dev/docs/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). + properties: + google: + description: Enable google auth for your application. + properties: + clientId: + description: >- + A Google generated token representing the developer's + credentials for [Google's API + Console](https://console.cloud.google.com/apis/dashboard?pli=1&project=discourse-login-388921). + Learn how to get a `clientId` + [here](https://developers.google.com/identity/gsi/web/guides/get-google-api-clientid). + type: string + required: + - clientId + type: object + nickname: + description: Enable nickname auth for your application. + $ref: '#/components/schemas/Record_string.never_' + anonymous: + description: Enable anonymous auth for your application. + $ref: '#/components/schemas/Record_string.never_' + type: object + OrgId: + description: >- + System generated unique identifier for an organization. Not guaranteed + to have a specific format. + type: string + example: org-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + Application: + description: An application object is the top level namespace for the game server. + properties: + deletedBy: + description: UserId or email address for the user that deleted the application. + type: string + nullable: true + example: google-oauth2|107030234048588177467 + deletedAt: + description: When the application was deleted. + type: string + format: date-time + nullable: true + createdAt: + description: When the application was created. + type: string + format: date-time + createdBy: + description: UserId or email address for the user that created the application. + type: string + example: google-oauth2|107030234048588177467 + orgId: + $ref: '#/components/schemas/OrgId' + authConfiguration: + description: >- + Used to authenticate player requests. Use your own authentication or + Hathora's Auth Client. + $ref: '#/components/schemas/AuthConfiguration' + appSecret: + description: Secret that is used for identity and access management. + type: string + example: secret-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + appId: + $ref: '#/components/schemas/AppId' + appName: + $ref: '#/components/schemas/AppName' + required: + - deletedBy + - deletedAt + - createdAt + - createdBy + - orgId + - authConfiguration + - appSecret + - appId + - appName + type: object + BuildId: + description: System generated id for a build. Increments by 1. + type: integer + format: int32 + example: 1 + DeploymentId: + description: System generated id for a deployment. Increments by 1. + type: integer + format: int32 + example: 1 + TransportType: + description: >- + Transport type specifies the underlying communication protocol to the + exposed port. + type: string + enum: + - tcp + - udp + - tls + ContainerPort: + description: >- + A container port object represents the transport configruations for how + your server will listen. + properties: + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: integer + format: int32 + example: 8000 + minimum: 1 + maximum: 65535 + name: + description: Readable name for the port. + type: string + example: default + minLength: 1 + maxLength: 100 + pattern: ^[a-z][a-z0-9-]*$ + required: + - transportType + - port + - name + type: object + PlanName: + description: >- + A plan defines how much CPU and memory is required to run an instance of + your game server. + + + `tiny`: shared core, 1gb memory + + + `small`: 1 core, 2gb memory + + + `medium`: 2 core, 4gb memory + + + `large`: 4 core, 8gb memory + type: string + enum: + - tiny + - small + - medium + - large + example: tiny + NumRoomsPerProcess: + description: >- + Governs how many + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) can be + scheduled in a process. + type: integer + format: int32 + example: 3 + minimum: 1 + maximum: 10000 + Deployment: + description: >- + Deployment is a versioned configuration for a build that describes + runtime behavior. + properties: + idleTimeoutEnabled: + description: >- + Option to shut down processes that have had no new connections or + rooms + + for five minutes. + type: boolean + default: 'true' + env: + description: >- + The environment variable that our process will have access to at + runtime. + items: + properties: + value: + type: string + example: 'TRUE' + maxLength: 5000 + name: + type: string + example: EULA + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + required: + - value + - name + type: object + type: array + maxItems: 100 + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + planName: + $ref: '#/components/schemas/PlanName' + additionalContainerPorts: + description: Additional ports your server listens on. + items: + $ref: '#/components/schemas/ContainerPort' + type: array + example: + transportType: tcp + port: 4000 + name: debug + maxItems: 2 + defaultContainerPort: + description: Describes the primary port your process listens on. + $ref: '#/components/schemas/ContainerPort' + transportType: + type: string + enum: + - tcp + - udp + - tls + deprecated: true + containerPort: + type: number + format: double + deprecated: true + createdAt: + description: When the deployment was created. + type: string + format: date-time + createdBy: + description: UserId or email address for the user that created the deployment. + type: string + example: google-oauth2|107030234048588177467 + requestedMemoryMB: + description: The amount of memory allocated to your process. + type: integer + format: int32 + example: 1024 + requestedCPU: + description: The number of cores allocated to your process. + type: number + format: double + example: 0.5 + deploymentId: + $ref: '#/components/schemas/DeploymentId' + buildId: + $ref: '#/components/schemas/BuildId' + appId: + $ref: '#/components/schemas/AppId' + required: + - env + - roomsPerProcess + - planName + - additionalContainerPorts + - defaultContainerPort + - transportType + - containerPort + - createdAt + - createdBy + - requestedMemoryMB + - requestedCPU + - deploymentId + - buildId + - appId + type: object + BuildStatus: + type: string + enum: + - created + - running + - succeeded + - failed + Region: + type: string + enum: + - Seattle + - Los_Angeles + - Washington_DC + - Chicago + - London + - Frankfurt + - Mumbai + - Singapore + - Tokyo + - Sydney + - Sao_Paulo + BuildTag: + description: >- + Tag to associate an external version with a build. It is accessible via + [`GetBuildInfo()`](https://hathora.dev/api#tag/BuildV1/operation/GetBuildInfo). + type: string + example: 0.1.14-14c793 + maxLength: 1000 + Build: + description: A build represents a game server artifact and its associated metadata. + properties: + buildTag: + allOf: + - $ref: '#/components/schemas/BuildTag' + nullable: true + regionalContainerTags: + items: + properties: + containerTag: + type: string + region: + $ref: '#/components/schemas/Region' + required: + - containerTag + - region + type: object + type: array + deprecated: true + imageSize: + description: The size (in bytes) of the Docker image built by Hathora. + type: integer + format: int64 + status: + description: >- + Current status of your build. + + + `created`: a build was created but not yet run + + + `running`: the build process is actively executing + + + `succeeded`: the game server artifact was successfully built and + stored in the Hathora registries + + + `failed`: the build process was unsuccessful, most likely due to an + error with the `Dockerfile` + $ref: '#/components/schemas/BuildStatus' + deletedAt: + description: When the build was deleted. + type: string + format: date-time + nullable: true + finishedAt: + description: >- + When + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + finished executing. + type: string + format: date-time + nullable: true + startedAt: + description: >- + When + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + is called. + type: string + format: date-time + nullable: true + createdAt: + description: >- + When + [`CreateBuild()`](https://hathora.dev/api#tag/BuildV1/operation/CreateBuild) + is called. + type: string + format: date-time + createdBy: + description: UserId or email address for the user that created the build. + type: string + example: google-oauth2|107030234048588177467 + buildId: + $ref: '#/components/schemas/BuildId' + appId: + $ref: '#/components/schemas/AppId' + required: + - regionalContainerTags + - imageSize + - status + - deletedAt + - finishedAt + - startedAt + - createdAt + - createdBy + - buildId + - appId + type: object + ApplicationWithLatestDeploymentAndBuild: + allOf: + - $ref: '#/components/schemas/Application' + - properties: + deployment: + allOf: + - $ref: '#/components/schemas/Deployment' + - properties: + build: + $ref: '#/components/schemas/Build' + required: + - build + type: object + type: object + AppConfig: + properties: + authConfiguration: + $ref: '#/components/schemas/AuthConfiguration' + appName: + $ref: '#/components/schemas/AppName' + required: + - authConfiguration + - appName + type: object + ApiError: + properties: + message: + type: string + required: + - message + type: object + LoginResponse: + properties: + token: + description: A unique Hathora-signed JWT player token. + type: string + example: >- + eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoiYW5vbnltb3VzIiwiaWQiOiJ3aDA4eWN3eTJwOSIsIm5hbWUiOiJqaXR0ZXJ5LXNhbG1vbi1ndWxsIiwiaWF0IjoxNjg5MzQ5MTk3fQ.-LzlPhZw2tw0ycZ229IRHwwmINGKWNPFMDrXOphLjEk + required: + - token + type: object + LoginNicknameRequest: + properties: + nickname: + description: An alias to represent a player. + type: string + example: squiddytwoshoes + required: + - nickname + type: object + LoginGoogleRequest: + properties: + idToken: + description: >- + A Google-signed OIDC ID token representing a player's authenticated + identity. Learn how to get an `idToken` + [here](https://cloud.google.com/docs/authentication/get-id-token). + type: string + example: >- + eyJhbGciOiJSUzI1NiIsImtpZCI6ImZkNDhhNzUxMzhkOWQ0OGYwYWE2MzVlZjU2OWM0ZTE5NmY3YWU4ZDYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXpwIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTE0NTQyMzMwNzI3MTU2MTMzNzc2IiwiZW1haWwiOiJocGFdkeivmeuzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdF9oYXNoIjoidno1NGhhdTNxbnVR + required: + - idToken + type: object + CardBrand: + type: string + enum: + - amex + - cartes_bancaires + - diners + - discover + - jcb + - mastercard + - visa + - unionpay + - card + CardPaymentMethod: + properties: + last4: + type: string + brand: + $ref: '#/components/schemas/CardBrand' + required: + - last4 + - brand + type: object + AchPaymentMethod: + properties: + last4: + type: string + bankName: + type: string + type: object + LinkPaymentMethod: + properties: + email: + type: string + type: object + Partial__card-CardPaymentMethod--ach-AchPaymentMethod--link-LinkPaymentMethod--__: + description: Make all properties in T optional + properties: + card: + $ref: '#/components/schemas/CardPaymentMethod' + ach: + $ref: '#/components/schemas/AchPaymentMethod' + link: + $ref: '#/components/schemas/LinkPaymentMethod' + type: object + CustomerPortalUrl: + properties: + returnUrl: + type: string + required: + - returnUrl + type: object + InvoiceStatus: + type: string + enum: + - pending + - paid + - overdue + Invoice: + properties: + status: + $ref: '#/components/schemas/InvoiceStatus' + amountDue: + type: number + format: double + pdfUrl: + type: string + dueDate: + type: string + format: date-time + year: + type: number + format: double + month: + type: number + format: double + id: + type: string + required: + - status + - amountDue + - pdfUrl + - dueDate + - year + - month + - id + type: object + CreateBuildParams: + properties: + buildTag: + $ref: '#/components/schemas/BuildTag' + type: object + DeploymentConfig: + description: User specified deployment configuration for your application at runtime. + properties: + idleTimeoutEnabled: + description: >- + Option to shut down processes that have had no new connections or + rooms + + for five minutes. + type: boolean + default: 'true' + env: + description: >- + The environment variable that our process will have access to at + runtime. + items: + properties: + value: + type: string + example: 'TRUE' + maxLength: 5000 + name: + type: string + example: EULA + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + required: + - value + - name + type: object + type: array + maxItems: 100 + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + planName: + $ref: '#/components/schemas/PlanName' + additionalContainerPorts: + description: Additional ports your server listens on. + items: + $ref: '#/components/schemas/ContainerPort' + type: array + maxItems: 2 + transportType: + $ref: '#/components/schemas/TransportType' + containerPort: + description: Default port the server listens on. + type: integer + format: int32 + example: 4000 + minimum: 1 + maximum: 65535 + required: + - env + - roomsPerProcess + - planName + - transportType + - containerPort + type: object + DiscoveryResponse: + items: + properties: + port: + type: number + format: double + host: + type: string + region: + $ref: '#/components/schemas/Region' + required: + - port + - host + - region + type: object + type: array + example: + - region: Seattle + host: ping.hathora.dev + port: 2000 + RoomId: + description: >- + Unique identifier to a game session or match. Use the default system + generated ID or overwrite it with your own. + + Note: error will be returned if `roomId` is not globally unique. + type: string + example: 2swovpy1fnunu + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z0-9_-]*$ + LobbyVisibility: + description: >- + Types of lobbies a player can create. + + + `private`: the player who created the room must share the roomId with + their friends + + + `public`: visible in the public lobby list, anyone can join + + + `local`: for testing with a server running locally + type: string + enum: + - private + - public + - local + example: private + LobbyInitialConfig: + description: >- + User input to initialize the game state. Object must be smaller than + 64KB. + type: object + ShortCode: + description: User-defined identifier for a lobby. + type: string + example: LFG4 + maxLength: 100 + Lobby: + description: A lobby object allows you to store and manage metadata for your rooms. + properties: + shortCode: + allOf: + - $ref: '#/components/schemas/ShortCode' + nullable: true + state: + description: JSON blob to store metadata for a room. Must be smaller than 1MB. + type: object + nullable: true + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + createdAt: + description: When the lobby was created. + type: string + format: date-time + createdBy: + description: UserId or email address for the user that created the lobby. + type: string + example: google-oauth2|107030234048588177467 + local: + type: boolean + deprecated: true + visibility: + $ref: '#/components/schemas/LobbyVisibility' + region: + $ref: '#/components/schemas/Region' + roomId: + $ref: '#/components/schemas/RoomId' + appId: + $ref: '#/components/schemas/AppId' + required: + - shortCode + - initialConfig + - createdAt + - createdBy + - local + - visibility + - region + - roomId + - appId + type: object + CreateLobbyParams: + properties: + visibility: + $ref: '#/components/schemas/LobbyVisibility' + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - visibility + - initialConfig + - region + type: object + SetLobbyStateParams: + properties: + state: + description: JSON blob to store metadata for a room. Must be smaller than 1MB. + type: object + required: + - state + type: object + RoomConfig: + description: >- + Optional configuration parameters for the room. Can be any string + including stringified JSON. It is accessible from the room via + [`GetRoomInfo()`](https://hathora.dev/api#tag/RoomV2/operation/GetRoomInfo). + type: string + example: '{"name":"my-room"}' + maxLength: 10000 + LobbyV3: + description: A lobby object allows you to store and manage metadata for your rooms. + properties: + shortCode: + description: User defined identifier for a lobby, defaults to `roomId` + $ref: '#/components/schemas/ShortCode' + createdAt: + description: When the lobby was created. + type: string + format: date-time + createdBy: + description: UserId or email address for the user that created the lobby. + type: string + example: google-oauth2|107030234048588177467 + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + visibility: + $ref: '#/components/schemas/LobbyVisibility' + region: + $ref: '#/components/schemas/Region' + roomId: + description: >- + Hathora generated identifier for a room, unique for a given + application (including stopped rooms) + $ref: '#/components/schemas/RoomId' + appId: + $ref: '#/components/schemas/AppId' + required: + - shortCode + - createdAt + - createdBy + - roomConfig + - visibility + - region + - roomId + - appId + type: object + CreateLobbyV3Params: + properties: + visibility: + $ref: '#/components/schemas/LobbyVisibility' + roomConfig: + $ref: '#/components/schemas/RoomConfig' + region: + $ref: '#/components/schemas/Region' + required: + - visibility + - region + type: object + LogsFollow: + description: Stream logs in realtime. + type: boolean + default: 'false' + TailLines: + description: Number of lines to return from most recent logs history. + type: integer + format: int32 + default: '100' + example: 100 + minimum: 1 + maximum: 5000 + ProcessId: + description: >- + System generated unique identifier to a runtime instance of your game + server. + type: string + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + VerificationEmailResponse: + properties: + status: + type: string + enum: + - success + nullable: false + required: + - status + type: object + VerificationEmailRequest: + properties: + userId: + type: string + required: + - userId + type: object + MetricValue: + properties: + value: + type: number + format: double + timestamp: + type: number + format: double + required: + - value + - timestamp + type: object + Record_Partial_MetricName_.MetricValue-Array_: + description: Construct a type with a set of properties K of type T + properties: + cpu: + items: + $ref: '#/components/schemas/MetricValue' + type: array + memory: + items: + $ref: '#/components/schemas/MetricValue' + type: array + rate_egress: + items: + $ref: '#/components/schemas/MetricValue' + type: array + total_egress: + items: + $ref: '#/components/schemas/MetricValue' + type: array + active_connections: + items: + $ref: '#/components/schemas/MetricValue' + type: array + type: object + MetricName: + description: Available metrics to query over time. + type: string + enum: + - cpu + - memory + - rate_egress + - total_egress + - active_connections + MetricsStep: + description: Width of time in seconds to group data. + type: integer + format: int32 + default: '60' + ExposedPort: + description: Connection details for an active process. + properties: + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: integer + format: int32 + host: + type: string + name: + type: string + required: + - transportType + - port + - host + - name + type: object + example: + host: 1.proxy.hathora.dev + name: default + port: 34567 + transportType: tcp + Process: + description: >- + A process object represents a runtime instance of your game server and + its metadata. + properties: + egressedBytes: + description: Measures network traffic leaving the process in bytes. + type: integer + format: int32 + example: 435 + idleSince: + type: string + format: date-time + nullable: true + deprecated: true + activeConnectionsUpdatedAt: + type: string + format: date-time + deprecated: true + activeConnections: + description: Tracks the number of active connections to a process. + type: integer + format: int32 + example: 10 + deprecated: true + roomsAllocatedUpdatedAt: + type: string + format: date-time + roomsAllocated: + description: Tracks the number of rooms that have been allocated to the process. + type: integer + format: int32 + example: 1 + roomSlotsAvailableUpdatedAt: + type: string + format: date-time + deprecated: true + roomSlotsAvailable: + type: number + format: double + deprecated: true + draining: + description: Process in drain will not accept any new rooms. + type: boolean + terminatedAt: + description: When the process has been terminated. + type: string + format: date-time + nullable: true + stoppingAt: + description: >- + When the process is issued to stop. We use this to determine when we + should stop billing. + type: string + format: date-time + nullable: true + startedAt: + description: >- + When the process bound to the specified port. We use this to + determine when we should start billing. + type: string + format: date-time + nullable: true + startingAt: + description: When the process started being provisioned. + type: string + format: date-time + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + allOf: + - $ref: '#/components/schemas/ExposedPort' + nullable: true + port: + type: number + format: double + deprecated: true + host: + type: string + deprecated: true + region: + $ref: '#/components/schemas/Region' + processId: + $ref: '#/components/schemas/ProcessId' + deploymentId: + $ref: '#/components/schemas/DeploymentId' + appId: + $ref: '#/components/schemas/AppId' + required: + - egressedBytes + - idleSince + - activeConnectionsUpdatedAt + - activeConnections + - roomsAllocatedUpdatedAt + - roomsAllocated + - roomSlotsAvailableUpdatedAt + - roomSlotsAvailable + - draining + - terminatedAt + - stoppingAt + - startedAt + - startingAt + - roomsPerProcess + - additionalExposedPorts + - exposedPort + - port + - host + - region + - processId + - deploymentId + - appId + type: object + RoomStatus: + description: >- + The allocation status of a room. + + + `scheduling`: a process is not allocated yet and the room is waiting to + be scheduled + + + `active`: ready to accept connections + + + `suspended`: room is unallocated from the process but can be rescheduled + later with the same `roomId` + + + `destroyed`: all associated metadata is deleted + type: string + enum: + - scheduling + - active + - suspended + - destroyed + example: active + RoomAllocationId: + description: System generated unique identifier to an allocated instance of a room. + type: string + example: e3a0aa32-1711-4036-acfa-008b96061a78 + RoomAllocation: + description: Metadata on an allocated instance of a room. + properties: + unscheduledAt: + type: string + format: date-time + nullable: true + scheduledAt: + type: string + format: date-time + processId: + $ref: '#/components/schemas/ProcessId' + roomAllocationId: + $ref: '#/components/schemas/RoomAllocationId' + required: + - unscheduledAt + - scheduledAt + - processId + - roomAllocationId + type: object + Pick_Room.Exclude_keyofRoom.allocations__: + description: From T, pick a set of properties whose keys are in the union K + properties: + appId: + $ref: '#/components/schemas/AppId' + roomId: + $ref: '#/components/schemas/RoomId' + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + status: + $ref: '#/components/schemas/RoomStatus' + currentAllocation: + allOf: + - $ref: '#/components/schemas/RoomAllocation' + nullable: true + required: + - appId + - roomId + - roomConfig + - status + - currentAllocation + type: object + Omit_Room.allocations_: + description: Construct a type with the properties of T except for those in type K. + $ref: '#/components/schemas/Pick_Room.Exclude_keyofRoom.allocations__' + ProcessWithRooms: + allOf: + - $ref: '#/components/schemas/Process' + - properties: + rooms: + items: + $ref: '#/components/schemas/Omit_Room.allocations_' + type: array + totalRooms: + type: integer + format: int32 + required: + - rooms + - totalRooms + type: object + ProcessStatus: + type: string + enum: + - starting + - running + - draining + - stopping + - stopped + - failed + ProcessV2: + properties: + status: + description: Process in drain will not accept any new rooms. + $ref: '#/components/schemas/ProcessStatus' + roomsAllocated: + description: Tracks the number of rooms that have been allocated to the process. + type: integer + format: int32 + example: 1 + terminatedAt: + description: When the process has been terminated. + type: string + format: date-time + nullable: true + stoppingAt: + description: >- + When the process is issued to stop. We use this to determine when we + should stop billing. + type: string + format: date-time + nullable: true + startedAt: + description: >- + When the process bound to the specified port. We use this to + determine when we should start billing. + type: string + format: date-time + nullable: true + createdAt: + description: When the process started being provisioned. + type: string + format: date-time + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + allOf: + - $ref: '#/components/schemas/ExposedPort' + nullable: true + region: + $ref: '#/components/schemas/Region' + processId: + $ref: '#/components/schemas/ProcessId' + deploymentId: + $ref: '#/components/schemas/DeploymentId' + appId: + $ref: '#/components/schemas/AppId' + required: + - status + - roomsAllocated + - terminatedAt + - stoppingAt + - startedAt + - createdAt + - roomsPerProcess + - additionalExposedPorts + - exposedPort + - region + - processId + - deploymentId + - appId + type: object + CreateRoomParams: + properties: + roomConfig: + $ref: '#/components/schemas/RoomConfig' + region: + $ref: '#/components/schemas/Region' + required: + - region + type: object + Room: + description: A room object represents a game session or match. + properties: + currentAllocation: + allOf: + - $ref: '#/components/schemas/RoomAllocation' + nullable: true + status: + $ref: '#/components/schemas/RoomStatus' + allocations: + items: + $ref: '#/components/schemas/RoomAllocation' + type: array + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + roomId: + $ref: '#/components/schemas/RoomId' + appId: + $ref: '#/components/schemas/AppId' + required: + - currentAllocation + - status + - allocations + - roomConfig + - roomId + - appId + type: object + StartingConnectionInfo: + properties: + status: + type: string + enum: + - starting + nullable: false + roomId: + $ref: '#/components/schemas/RoomId' + required: + - status + - roomId + type: object + ActiveConnectionInfo: + properties: + status: + type: string + enum: + - active + nullable: false + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: number + format: double + host: + type: string + roomId: + $ref: '#/components/schemas/RoomId' + required: + - status + - transportType + - port + - host + - roomId + type: object + ConnectionInfo: + description: Connection information to the default port. + anyOf: + - $ref: '#/components/schemas/StartingConnectionInfo' + - $ref: '#/components/schemas/ActiveConnectionInfo' + ConnectionInfoV2: + description: Connection information for the default and additional ports. + properties: + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + $ref: '#/components/schemas/ExposedPort' + status: + description: >- + `exposedPort` will only be available when the `status` of a room is + "active". + type: string + enum: + - starting + - active + example: active + roomId: + $ref: '#/components/schemas/RoomId' + required: + - additionalExposedPorts + - status + - roomId + type: object + CreateRoomResponse: + allOf: + - $ref: '#/components/schemas/ConnectionInfoV2' + - properties: + processId: + $ref: '#/components/schemas/ProcessId' + required: + - processId + type: object + UpdateRoomConfigParams: + properties: + roomConfig: + $ref: '#/components/schemas/RoomConfig' + required: + - roomConfig + type: object + OrgTokenId: + description: System generated unique identifier for an organization token. + type: string + example: org-token-af469a92-5b45-4565-b3c4-b79878de67d2 + OrgTokenName: + description: Readable name for a token. Must be unique within an organization. + type: string + example: ci-token + maxLength: 64 + OrgTokenStatus: + type: string + enum: + - active + - revoked + OrgToken: + properties: + createdAt: + type: string + format: date-time + createdBy: + type: string + lastFourCharsOfKey: + type: string + status: + $ref: '#/components/schemas/OrgTokenStatus' + name: + $ref: '#/components/schemas/OrgTokenName' + orgId: + type: string + orgTokenId: + $ref: '#/components/schemas/OrgTokenId' + required: + - createdAt + - createdBy + - lastFourCharsOfKey + - status + - name + - orgId + - orgTokenId + type: object + ListOrgTokens: + properties: + tokens: + items: + $ref: '#/components/schemas/OrgToken' + type: array + required: + - tokens + type: object + CreatedOrgToken: + properties: + plainTextToken: + type: string + orgToken: + $ref: '#/components/schemas/OrgToken' + required: + - plainTextToken + - orgToken + type: object + CreateOrgToken: + properties: + name: + $ref: '#/components/schemas/OrgTokenName' + required: + - name + type: object + BuildV1BuildServerArtifactRequest: + type: object + properties: + file: + type: string + format: binary + required: + - file + LobbyV2CreatePrivateLobbyRequest: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + LobbyV2CreatePublicLobbyRequest: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + LobbyV2CreateLocalLobbyRequest: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + AppV1GetAppListResponse: + items: + $ref: '#/components/schemas/ApplicationWithLatestDeploymentAndBuild' + type: array + BillingV1GetBalanceResponse: + type: number + format: double + BillingV1CreateCustomerPortalUrlResponse: + type: string + BillingV1ListInvoicesResponse: + items: + $ref: '#/components/schemas/Invoice' + type: array + BuildV1GetApplicationBuildsResponse: + items: + $ref: '#/components/schemas/Build' + type: array + BuildV1BuildServerArtifactResponse: + type: string + format: byte + DeploymentV1ListDeploymentsByAppIdResponse: + items: + $ref: '#/components/schemas/Deployment' + type: array + LobbyV1ListLobbiesByAppIdResponse: + items: + $ref: '#/components/schemas/Lobby' + type: array + LobbyV2ListPublicLobbiesResponse: + items: + $ref: '#/components/schemas/Lobby' + type: array + LobbyV3ListPublicLobbiesResponse: + items: + $ref: '#/components/schemas/LobbyV3' + type: array + LogV1GetAllLogsResponse: + type: string + format: byte + LogV1StreamLogsForProcessResponse: + type: string + format: byte + LogV1DownloadLogForProcessResponse: + type: string + format: byte + LogV1GetLogStreamResponse: + type: string + format: byte + ProcessesV1ListRunningProcessesResponse: + items: + $ref: '#/components/schemas/ProcessWithRooms' + type: array + ProcessesV1GetRecentlyStoppedProcessesResponse: + items: + $ref: '#/components/schemas/Process' + type: array + ProcessesV2GetLatestProcessesListResponse: + items: + $ref: '#/components/schemas/ProcessV2' + type: array + RoomV1GetActiveRoomsResponse: + items: + $ref: '#/components/schemas/Omit_Room.allocations_' + type: array + RoomV1GetInactiveRoomsResponse: + items: + $ref: '#/components/schemas/Omit_Room.allocations_' + type: array + RoomV2ListActiveRoomsResponse: + items: + $ref: '#/components/schemas/Omit_Room.allocations_' + type: array + RoomV2ListInactiveRoomsResponse: + items: + $ref: '#/components/schemas/Omit_Room.allocations_' + type: array + OrgTokensV1RevokeOrgTokenResponse: + type: boolean + securitySchemes: + hathoraDevToken: + type: http + scheme: bearer + bearerFormat: JWT + playerAuth: + type: http + scheme: bearer + bearerFormat: JWT +x-speakeasy-globals: + parameters: + - in: path + name: appId + schema: + $ref: '#/components/schemas/AppId' diff --git a/sdks/db/generate-repository-description-cache/hathora.json b/sdks/db/generate-repository-description-cache/hathora.json new file mode 100644 index 0000000000..3bd7e16522 --- /dev/null +++ b/sdks/db/generate-repository-description-cache/hathora.json @@ -0,0 +1,3 @@ +{ + "A venture-backed start-up building a modern cloud optimized for multiplayer games.": "A venture-backed start-up building a modern cloud optimized for multiplayer games. Hathora's {language} SDK generated by Konfig (https://konfigthis.com/)." +} \ No newline at end of file diff --git a/sdks/db/intermediate-fixed-specs/hathora/openapi.yaml b/sdks/db/intermediate-fixed-specs/hathora/openapi.yaml new file mode 100644 index 0000000000..3934b9c47c --- /dev/null +++ b/sdks/db/intermediate-fixed-specs/hathora/openapi.yaml @@ -0,0 +1,4646 @@ +components: + examples: {} + headers: {} + parameters: {} + requestBodies: {} + responses: {} + schemas: + AppName: + type: string + example: minecraft + description: Readable name for an application. Must be unique within an organization. + maxLength: 64 + pattern: ^[a-z0-9-]+$ + AppId: + type: string + example: app-af469a92-5b45-4565-b3c4-b79878de67d2 + description: System generated unique identifier for an application. + Record_string.never_: + properties: {} + type: object + description: Construct a type with a set of properties K of type T + AuthConfiguration: + properties: + google: + properties: + clientId: + type: string + description: >- + A Google generated token representing the developer's + credentials for [Google's API + Console](https://console.cloud.google.com/apis/dashboard?pli=1&project=discourse-login-388921). + Learn how to get a `clientId` + [here](https://developers.google.com/identity/gsi/web/guides/get-google-api-clientid). + required: + - clientId + type: object + description: Enable google auth for your application. + nickname: + $ref: '#/components/schemas/Record_string.never_' + description: Enable nickname auth for your application. + anonymous: + $ref: '#/components/schemas/Record_string.never_' + description: Enable anonymous auth for your application. + type: object + description: >- + Configure [player + authentication](https://hathora.dev/docs/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). + OrgId: + type: string + example: org-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + description: >- + System generated unique identifier for an organization. Not guaranteed + to have a specific format. + Application: + properties: + deletedBy: + type: string + nullable: true + description: UserId or email address for the user that deleted the application. + example: google-oauth2|107030234048588177467 + deletedAt: + type: string + format: date-time + nullable: true + description: When the application was deleted. + createdAt: + type: string + format: date-time + description: When the application was created. + createdBy: + type: string + description: UserId or email address for the user that created the application. + example: google-oauth2|107030234048588177467 + orgId: + $ref: '#/components/schemas/OrgId' + authConfiguration: + $ref: '#/components/schemas/AuthConfiguration' + description: >- + Used to authenticate player requests. Use your own authentication or + Hathora's Auth Client. + appSecret: + type: string + description: Secret that is used for identity and access management. + example: secret-6f706e83-0ec1-437a-9a46-7d4281eb2f39 + appId: + $ref: '#/components/schemas/AppId' + appName: + $ref: '#/components/schemas/AppName' + required: + - deletedBy + - deletedAt + - createdAt + - createdBy + - orgId + - authConfiguration + - appSecret + - appId + - appName + type: object + description: An application object is the top level namespace for the game server. + BuildId: + type: integer + format: int32 + example: 1 + description: System generated id for a build. Increments by 1. + DeploymentId: + type: integer + format: int32 + example: 1 + description: System generated id for a deployment. Increments by 1. + TransportType: + type: string + enum: + - tcp + - udp + - tls + description: >- + Transport type specifies the underlying communication protocol to the + exposed port. + ContainerPort: + properties: + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: integer + format: int32 + example: 8000 + minimum: 1 + maximum: 65535 + name: + type: string + description: Readable name for the port. + example: default + minLength: 1 + maxLength: 100 + pattern: ^[a-z][a-z0-9-]*$ + required: + - transportType + - port + - name + type: object + description: >- + A container port object represents the transport configruations for how + your server will listen. + PlanName: + type: string + enum: + - tiny + - small + - medium + - large + example: tiny + description: >- + A plan defines how much CPU and memory is required to run an instance of + your game server. + + + `tiny`: shared core, 1gb memory + + + `small`: 1 core, 2gb memory + + + `medium`: 2 core, 4gb memory + + + `large`: 4 core, 8gb memory + NumRoomsPerProcess: + type: integer + format: int32 + example: 3 + description: >- + Governs how many + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) can be + scheduled in a process. + minimum: 1 + maximum: 10000 + Deployment: + properties: + idleTimeoutEnabled: + type: boolean + description: >- + Option to shut down processes that have had no new connections or + rooms + + for five minutes. + default: 'true' + env: + items: + properties: + value: + type: string + example: 'TRUE' + maxLength: 5000 + name: + type: string + example: EULA + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + required: + - value + - name + type: object + type: array + description: >- + The environment variable that our process will have access to at + runtime. + maxItems: 100 + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + planName: + $ref: '#/components/schemas/PlanName' + additionalContainerPorts: + items: + $ref: '#/components/schemas/ContainerPort' + type: array + description: Additional ports your server listens on. + example: + transportType: tcp + port: 4000 + name: debug + maxItems: 2 + defaultContainerPort: + $ref: '#/components/schemas/ContainerPort' + description: Describes the primary port your process listens on. + transportType: + type: string + enum: + - tcp + - udp + - tls + deprecated: true + containerPort: + type: number + format: double + deprecated: true + createdAt: + type: string + format: date-time + description: When the deployment was created. + createdBy: + type: string + description: UserId or email address for the user that created the deployment. + example: google-oauth2|107030234048588177467 + requestedMemoryMB: + type: integer + format: int32 + description: The amount of memory allocated to your process. + example: 1024 + requestedCPU: + type: number + format: double + description: The number of cores allocated to your process. + example: 0.5 + deploymentId: + $ref: '#/components/schemas/DeploymentId' + buildId: + $ref: '#/components/schemas/BuildId' + appId: + $ref: '#/components/schemas/AppId' + required: + - env + - roomsPerProcess + - planName + - additionalContainerPorts + - defaultContainerPort + - transportType + - containerPort + - createdAt + - createdBy + - requestedMemoryMB + - requestedCPU + - deploymentId + - buildId + - appId + type: object + description: >- + Deployment is a versioned configuration for a build that describes + runtime behavior. + BuildStatus: + type: string + enum: + - created + - running + - succeeded + - failed + Region: + type: string + enum: + - Seattle + - Los_Angeles + - Washington_DC + - Chicago + - London + - Frankfurt + - Mumbai + - Singapore + - Tokyo + - Sydney + - Sao_Paulo + BuildTag: + type: string + example: 0.1.14-14c793 + description: >- + Tag to associate an external version with a build. It is accessible via + [`GetBuildInfo()`](https://hathora.dev/api#tag/BuildV1/operation/GetBuildInfo). + maxLength: 1000 + Build: + properties: + buildTag: + allOf: + - $ref: '#/components/schemas/BuildTag' + nullable: true + regionalContainerTags: + items: + properties: + containerTag: + type: string + region: + $ref: '#/components/schemas/Region' + required: + - containerTag + - region + type: object + type: array + deprecated: true + imageSize: + type: integer + format: int64 + description: The size (in bytes) of the Docker image built by Hathora. + status: + $ref: '#/components/schemas/BuildStatus' + description: >- + Current status of your build. + + + `created`: a build was created but not yet run + + + `running`: the build process is actively executing + + + `succeeded`: the game server artifact was successfully built and + stored in the Hathora registries + + + `failed`: the build process was unsuccessful, most likely due to an + error with the `Dockerfile` + deletedAt: + type: string + format: date-time + nullable: true + description: When the build was deleted. + finishedAt: + type: string + format: date-time + nullable: true + description: >- + When + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + finished executing. + startedAt: + type: string + format: date-time + nullable: true + description: >- + When + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + is called. + createdAt: + type: string + format: date-time + description: >- + When + [`CreateBuild()`](https://hathora.dev/api#tag/BuildV1/operation/CreateBuild) + is called. + createdBy: + type: string + description: UserId or email address for the user that created the build. + example: google-oauth2|107030234048588177467 + buildId: + $ref: '#/components/schemas/BuildId' + appId: + $ref: '#/components/schemas/AppId' + required: + - regionalContainerTags + - imageSize + - status + - deletedAt + - finishedAt + - startedAt + - createdAt + - createdBy + - buildId + - appId + type: object + description: A build represents a game server artifact and its associated metadata. + ApplicationWithLatestDeploymentAndBuild: + allOf: + - $ref: '#/components/schemas/Application' + - properties: + deployment: + allOf: + - $ref: '#/components/schemas/Deployment' + - properties: + build: + $ref: '#/components/schemas/Build' + required: + - build + type: object + type: object + AppConfig: + properties: + authConfiguration: + $ref: '#/components/schemas/AuthConfiguration' + appName: + $ref: '#/components/schemas/AppName' + required: + - authConfiguration + - appName + type: object + ApiError: + properties: + message: + type: string + required: + - message + type: object + LoginResponse: + properties: + token: + type: string + description: A unique Hathora-signed JWT player token. + example: >- + eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoiYW5vbnltb3VzIiwiaWQiOiJ3aDA4eWN3eTJwOSIsIm5hbWUiOiJqaXR0ZXJ5LXNhbG1vbi1ndWxsIiwiaWF0IjoxNjg5MzQ5MTk3fQ.-LzlPhZw2tw0ycZ229IRHwwmINGKWNPFMDrXOphLjEk + required: + - token + type: object + LoginNicknameRequest: + properties: + nickname: + type: string + description: An alias to represent a player. + example: squiddytwoshoes + required: + - nickname + type: object + LoginGoogleRequest: + properties: + idToken: + type: string + description: >- + A Google-signed OIDC ID token representing a player's authenticated + identity. Learn how to get an `idToken` + [here](https://cloud.google.com/docs/authentication/get-id-token). + example: >- + eyJhbGciOiJSUzI1NiIsImtpZCI6ImZkNDhhNzUxMzhkOWQ0OGYwYWE2MzVlZjU2OWM0ZTE5NmY3YWU4ZDYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXpwIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTE0NTQyMzMwNzI3MTU2MTMzNzc2IiwiZW1haWwiOiJocGFdkeivmeuzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdF9oYXNoIjoidno1NGhhdTNxbnVR + required: + - idToken + type: object + CardBrand: + type: string + enum: + - amex + - cartes_bancaires + - diners + - discover + - jcb + - mastercard + - visa + - unionpay + - card + CardPaymentMethod: + properties: + last4: + type: string + brand: + $ref: '#/components/schemas/CardBrand' + required: + - last4 + - brand + type: object + AchPaymentMethod: + properties: + last4: + type: string + bankName: + type: string + type: object + LinkPaymentMethod: + properties: + email: + type: string + type: object + Partial__card-CardPaymentMethod--ach-AchPaymentMethod--link-LinkPaymentMethod--__: + properties: + card: + $ref: '#/components/schemas/CardPaymentMethod' + ach: + $ref: '#/components/schemas/AchPaymentMethod' + link: + $ref: '#/components/schemas/LinkPaymentMethod' + type: object + description: Make all properties in T optional + PaymentMethod: + $ref: >- + #/components/schemas/Partial__card-CardPaymentMethod--ach-AchPaymentMethod--link-LinkPaymentMethod--__ + CustomerPortalUrl: + properties: + returnUrl: + type: string + required: + - returnUrl + type: object + InvoiceStatus: + type: string + enum: + - pending + - paid + - overdue + Invoice: + properties: + status: + $ref: '#/components/schemas/InvoiceStatus' + amountDue: + type: number + format: double + pdfUrl: + type: string + dueDate: + type: string + format: date-time + year: + type: number + format: double + month: + type: number + format: double + id: + type: string + required: + - status + - amountDue + - pdfUrl + - dueDate + - year + - month + - id + type: object + CreateBuildParams: + properties: + buildTag: + $ref: '#/components/schemas/BuildTag' + type: object + DeploymentConfig: + properties: + idleTimeoutEnabled: + type: boolean + description: >- + Option to shut down processes that have had no new connections or + rooms + + for five minutes. + default: 'true' + env: + items: + properties: + value: + type: string + example: 'TRUE' + maxLength: 5000 + name: + type: string + example: EULA + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$ + required: + - value + - name + type: object + type: array + description: >- + The environment variable that our process will have access to at + runtime. + maxItems: 100 + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + planName: + $ref: '#/components/schemas/PlanName' + additionalContainerPorts: + items: + $ref: '#/components/schemas/ContainerPort' + type: array + description: Additional ports your server listens on. + maxItems: 2 + transportType: + $ref: '#/components/schemas/TransportType' + containerPort: + type: integer + format: int32 + description: Default port the server listens on. + example: 4000 + minimum: 1 + maximum: 65535 + required: + - env + - roomsPerProcess + - planName + - transportType + - containerPort + type: object + description: User specified deployment configuration for your application at runtime. + DiscoveryResponse: + items: + properties: + port: + type: number + format: double + host: + type: string + region: + $ref: '#/components/schemas/Region' + required: + - port + - host + - region + type: object + type: array + example: + - region: Seattle + host: ping.hathora.dev + port: 2000 + RoomId: + type: string + example: 2swovpy1fnunu + description: >- + Unique identifier to a game session or match. Use the default system + generated ID or overwrite it with your own. + + Note: error will be returned if `roomId` is not globally unique. + minLength: 1 + maxLength: 100 + pattern: ^[a-zA-Z0-9_-]*$ + LobbyVisibility: + type: string + enum: + - private + - public + - local + example: private + description: >- + Types of lobbies a player can create. + + + `private`: the player who created the room must share the roomId with + their friends + + + `public`: visible in the public lobby list, anyone can join + + + `local`: for testing with a server running locally + LobbyInitialConfig: + additionalProperties: false + type: object + description: >- + User input to initialize the game state. Object must be smaller than + 64KB. + ShortCode: + type: string + example: LFG4 + description: User-defined identifier for a lobby. + maxLength: 100 + Lobby: + properties: + shortCode: + allOf: + - $ref: '#/components/schemas/ShortCode' + nullable: true + state: + additionalProperties: false + type: object + nullable: true + description: JSON blob to store metadata for a room. Must be smaller than 1MB. + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + createdAt: + type: string + format: date-time + description: When the lobby was created. + createdBy: + type: string + description: UserId or email address for the user that created the lobby. + example: google-oauth2|107030234048588177467 + local: + type: boolean + deprecated: true + visibility: + $ref: '#/components/schemas/LobbyVisibility' + region: + $ref: '#/components/schemas/Region' + roomId: + $ref: '#/components/schemas/RoomId' + appId: + $ref: '#/components/schemas/AppId' + required: + - shortCode + - initialConfig + - createdAt + - createdBy + - local + - visibility + - region + - roomId + - appId + type: object + description: A lobby object allows you to store and manage metadata for your rooms. + CreateLobbyParams: + properties: + visibility: + $ref: '#/components/schemas/LobbyVisibility' + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - visibility + - initialConfig + - region + type: object + SetLobbyStateParams: + properties: + state: + additionalProperties: false + type: object + description: JSON blob to store metadata for a room. Must be smaller than 1MB. + required: + - state + type: object + RoomConfig: + type: string + example: '{"name":"my-room"}' + description: >- + Optional configuration parameters for the room. Can be any string + including stringified JSON. It is accessible from the room via + [`GetRoomInfo()`](https://hathora.dev/api#tag/RoomV2/operation/GetRoomInfo). + maxLength: 10000 + LobbyV3: + properties: + shortCode: + $ref: '#/components/schemas/ShortCode' + description: User defined identifier for a lobby, defaults to `roomId` + createdAt: + type: string + format: date-time + description: When the lobby was created. + createdBy: + type: string + description: UserId or email address for the user that created the lobby. + example: google-oauth2|107030234048588177467 + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + visibility: + $ref: '#/components/schemas/LobbyVisibility' + region: + $ref: '#/components/schemas/Region' + roomId: + $ref: '#/components/schemas/RoomId' + description: >- + Hathora generated identifier for a room, unique for a given + application (including stopped rooms) + appId: + $ref: '#/components/schemas/AppId' + required: + - shortCode + - createdAt + - createdBy + - roomConfig + - visibility + - region + - roomId + - appId + type: object + description: A lobby object allows you to store and manage metadata for your rooms. + CreateLobbyV3Params: + properties: + visibility: + $ref: '#/components/schemas/LobbyVisibility' + roomConfig: + $ref: '#/components/schemas/RoomConfig' + region: + $ref: '#/components/schemas/Region' + required: + - visibility + - region + type: object + LogsFollow: + type: boolean + default: 'false' + description: Stream logs in realtime. + TailLines: + type: integer + format: int32 + default: '100' + example: 100 + description: Number of lines to return from most recent logs history. + minimum: 1 + maximum: 5000 + ProcessId: + type: string + example: cbfcddd2-0006-43ae-996c-995fff7bed2e + description: >- + System generated unique identifier to a runtime instance of your game + server. + VerificationEmailResponse: + properties: + status: + type: string + enum: + - success + nullable: false + required: + - status + type: object + VerificationEmailRequest: + properties: + userId: + type: string + required: + - userId + type: object + MetricValue: + properties: + value: + type: number + format: double + timestamp: + type: number + format: double + required: + - value + - timestamp + type: object + Record_Partial_MetricName_.MetricValue-Array_: + properties: + cpu: + items: + $ref: '#/components/schemas/MetricValue' + type: array + memory: + items: + $ref: '#/components/schemas/MetricValue' + type: array + rate_egress: + items: + $ref: '#/components/schemas/MetricValue' + type: array + total_egress: + items: + $ref: '#/components/schemas/MetricValue' + type: array + active_connections: + items: + $ref: '#/components/schemas/MetricValue' + type: array + type: object + description: Construct a type with a set of properties K of type T + MetricsResponse: + $ref: '#/components/schemas/Record_Partial_MetricName_.MetricValue-Array_' + MetricName: + type: string + enum: + - cpu + - memory + - rate_egress + - total_egress + - active_connections + description: Available metrics to query over time. + MetricsStep: + type: integer + format: int32 + default: '60' + description: Width of time in seconds to group data. + ExposedPort: + properties: + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: integer + format: int32 + host: + type: string + name: + type: string + required: + - transportType + - port + - host + - name + type: object + example: + host: 1.proxy.hathora.dev + name: default + port: 34567 + transportType: tcp + description: Connection details for an active process. + Process: + properties: + egressedBytes: + type: integer + format: int32 + description: Measures network traffic leaving the process in bytes. + example: 435 + idleSince: + type: string + format: date-time + nullable: true + deprecated: true + activeConnectionsUpdatedAt: + type: string + format: date-time + deprecated: true + activeConnections: + type: integer + format: int32 + description: Tracks the number of active connections to a process. + example: 10 + deprecated: true + roomsAllocatedUpdatedAt: + type: string + format: date-time + roomsAllocated: + type: integer + format: int32 + description: Tracks the number of rooms that have been allocated to the process. + example: 1 + roomSlotsAvailableUpdatedAt: + type: string + format: date-time + deprecated: true + roomSlotsAvailable: + type: number + format: double + deprecated: true + draining: + type: boolean + description: Process in drain will not accept any new rooms. + terminatedAt: + type: string + format: date-time + nullable: true + description: When the process has been terminated. + stoppingAt: + type: string + format: date-time + nullable: true + description: >- + When the process is issued to stop. We use this to determine when we + should stop billing. + startedAt: + type: string + format: date-time + nullable: true + description: >- + When the process bound to the specified port. We use this to + determine when we should start billing. + startingAt: + type: string + format: date-time + description: When the process started being provisioned. + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + allOf: + - $ref: '#/components/schemas/ExposedPort' + nullable: true + port: + type: number + format: double + deprecated: true + host: + type: string + deprecated: true + region: + $ref: '#/components/schemas/Region' + processId: + $ref: '#/components/schemas/ProcessId' + deploymentId: + $ref: '#/components/schemas/DeploymentId' + appId: + $ref: '#/components/schemas/AppId' + required: + - egressedBytes + - idleSince + - activeConnectionsUpdatedAt + - activeConnections + - roomsAllocatedUpdatedAt + - roomsAllocated + - roomSlotsAvailableUpdatedAt + - roomSlotsAvailable + - draining + - terminatedAt + - stoppingAt + - startedAt + - startingAt + - roomsPerProcess + - additionalExposedPorts + - exposedPort + - port + - host + - region + - processId + - deploymentId + - appId + type: object + description: >- + A process object represents a runtime instance of your game server and + its metadata. + RoomStatus: + type: string + enum: + - scheduling + - active + - suspended + - destroyed + example: active + description: >- + The allocation status of a room. + + + `scheduling`: a process is not allocated yet and the room is waiting to + be scheduled + + + `active`: ready to accept connections + + + `suspended`: room is unallocated from the process but can be rescheduled + later with the same `roomId` + + + `destroyed`: all associated metadata is deleted + RoomAllocationId: + type: string + example: e3a0aa32-1711-4036-acfa-008b96061a78 + description: System generated unique identifier to an allocated instance of a room. + RoomAllocation: + properties: + unscheduledAt: + type: string + format: date-time + nullable: true + scheduledAt: + type: string + format: date-time + processId: + $ref: '#/components/schemas/ProcessId' + roomAllocationId: + $ref: '#/components/schemas/RoomAllocationId' + required: + - unscheduledAt + - scheduledAt + - processId + - roomAllocationId + type: object + description: Metadata on an allocated instance of a room. + Pick_Room.Exclude_keyofRoom.allocations__: + properties: + appId: + $ref: '#/components/schemas/AppId' + roomId: + $ref: '#/components/schemas/RoomId' + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + status: + $ref: '#/components/schemas/RoomStatus' + currentAllocation: + allOf: + - $ref: '#/components/schemas/RoomAllocation' + nullable: true + required: + - appId + - roomId + - roomConfig + - status + - currentAllocation + type: object + description: From T, pick a set of properties whose keys are in the union K + Omit_Room.allocations_: + $ref: '#/components/schemas/Pick_Room.Exclude_keyofRoom.allocations__' + description: Construct a type with the properties of T except for those in type K. + RoomWithoutAllocations: + $ref: '#/components/schemas/Omit_Room.allocations_' + ProcessWithRooms: + allOf: + - $ref: '#/components/schemas/Process' + - properties: + rooms: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + totalRooms: + type: integer + format: int32 + required: + - rooms + - totalRooms + type: object + ProcessStatus: + type: string + enum: + - starting + - running + - draining + - stopping + - stopped + - failed + ProcessV2: + properties: + status: + $ref: '#/components/schemas/ProcessStatus' + description: Process in drain will not accept any new rooms. + roomsAllocated: + type: integer + format: int32 + description: Tracks the number of rooms that have been allocated to the process. + example: 1 + terminatedAt: + type: string + format: date-time + nullable: true + description: When the process has been terminated. + stoppingAt: + type: string + format: date-time + nullable: true + description: >- + When the process is issued to stop. We use this to determine when we + should stop billing. + startedAt: + type: string + format: date-time + nullable: true + description: >- + When the process bound to the specified port. We use this to + determine when we should start billing. + createdAt: + type: string + format: date-time + description: When the process started being provisioned. + roomsPerProcess: + $ref: '#/components/schemas/NumRoomsPerProcess' + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + allOf: + - $ref: '#/components/schemas/ExposedPort' + nullable: true + region: + $ref: '#/components/schemas/Region' + processId: + $ref: '#/components/schemas/ProcessId' + deploymentId: + $ref: '#/components/schemas/DeploymentId' + appId: + $ref: '#/components/schemas/AppId' + required: + - status + - roomsAllocated + - terminatedAt + - stoppingAt + - startedAt + - createdAt + - roomsPerProcess + - additionalExposedPorts + - exposedPort + - region + - processId + - deploymentId + - appId + type: object + CreateRoomParams: + properties: + roomConfig: + $ref: '#/components/schemas/RoomConfig' + region: + $ref: '#/components/schemas/Region' + required: + - region + type: object + Room: + properties: + currentAllocation: + allOf: + - $ref: '#/components/schemas/RoomAllocation' + nullable: true + status: + $ref: '#/components/schemas/RoomStatus' + allocations: + items: + $ref: '#/components/schemas/RoomAllocation' + type: array + roomConfig: + allOf: + - $ref: '#/components/schemas/RoomConfig' + nullable: true + roomId: + $ref: '#/components/schemas/RoomId' + appId: + $ref: '#/components/schemas/AppId' + required: + - currentAllocation + - status + - allocations + - roomConfig + - roomId + - appId + type: object + description: A room object represents a game session or match. + StartingConnectionInfo: + properties: + status: + type: string + enum: + - starting + nullable: false + roomId: + $ref: '#/components/schemas/RoomId' + required: + - status + - roomId + type: object + ActiveConnectionInfo: + properties: + status: + type: string + enum: + - active + nullable: false + transportType: + $ref: '#/components/schemas/TransportType' + port: + type: number + format: double + host: + type: string + roomId: + $ref: '#/components/schemas/RoomId' + required: + - status + - transportType + - port + - host + - roomId + type: object + ConnectionInfo: + anyOf: + - $ref: '#/components/schemas/StartingConnectionInfo' + - $ref: '#/components/schemas/ActiveConnectionInfo' + description: Connection information to the default port. + ConnectionInfoV2: + properties: + additionalExposedPorts: + items: + $ref: '#/components/schemas/ExposedPort' + type: array + example: + - host: 1.proxy.hathora.dev + name: debug + port: 72941 + transportType: tcp + maxItems: 2 + exposedPort: + $ref: '#/components/schemas/ExposedPort' + status: + type: string + enum: + - starting + - active + description: >- + `exposedPort` will only be available when the `status` of a room is + "active". + example: active + roomId: + $ref: '#/components/schemas/RoomId' + required: + - additionalExposedPorts + - status + - roomId + type: object + description: Connection information for the default and additional ports. + CreateRoomResponse: + allOf: + - $ref: '#/components/schemas/ConnectionInfoV2' + - properties: + processId: + $ref: '#/components/schemas/ProcessId' + required: + - processId + type: object + UpdateRoomConfigParams: + properties: + roomConfig: + $ref: '#/components/schemas/RoomConfig' + required: + - roomConfig + type: object + OrgTokenId: + type: string + example: org-token-af469a92-5b45-4565-b3c4-b79878de67d2 + description: System generated unique identifier for an organization token. + OrgTokenName: + type: string + example: ci-token + description: Readable name for a token. Must be unique within an organization. + maxLength: 64 + OrgTokenStatus: + type: string + enum: + - active + - revoked + OrgToken: + properties: + createdAt: + type: string + format: date-time + createdBy: + type: string + lastFourCharsOfKey: + type: string + status: + $ref: '#/components/schemas/OrgTokenStatus' + name: + $ref: '#/components/schemas/OrgTokenName' + orgId: + type: string + orgTokenId: + $ref: '#/components/schemas/OrgTokenId' + required: + - createdAt + - createdBy + - lastFourCharsOfKey + - status + - name + - orgId + - orgTokenId + type: object + ListOrgTokens: + properties: + tokens: + items: + $ref: '#/components/schemas/OrgToken' + type: array + required: + - tokens + type: object + CreatedOrgToken: + properties: + plainTextToken: + type: string + orgToken: + $ref: '#/components/schemas/OrgToken' + required: + - plainTextToken + - orgToken + type: object + CreateOrgToken: + properties: + name: + $ref: '#/components/schemas/OrgTokenName' + required: + - name + type: object + securitySchemes: + hathoraDevToken: + type: http + scheme: bearer + bearerFormat: JWT + playerAuth: + type: http + scheme: bearer + bearerFormat: JWT +info: + title: Hathora Cloud API + version: 0.0.1 + description: >- + Welcome to the Hathora Cloud API documentation! Learn how to use the Hathora + Cloud APIs to build and scale your game servers globally. + contact: {} +openapi: 3.0.0 +paths: + /apps/v1/list: + get: + operationId: GetApps + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/ApplicationWithLatestDeploymentAndBuild' + type: array + description: >- + Returns an unsorted list of your organization’s + [applications](https://hathora.dev/docs/concepts/hathora-entities#application). + An application is uniquely identified by an `appId`. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: [] + /apps/v1/create: + post: + operationId: CreateApp + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppConfig' + /apps/v1/update/{appId}: + post: + operationId: UpdateApp + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Update data for an existing + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppConfig' + /apps/v1/info/{appId}: + get: + operationId: GetAppInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /apps/v1/delete/{appId}: + delete: + operationId: DeleteApp + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Delete an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. Your organization will lose access to this application. + tags: + - AppV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /auth/v1/{appId}/login/anonymous: + post: + operationId: LoginAnonymous + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Returns a unique player token for an anonymous user. + tags: + - AuthV1 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /auth/v1/{appId}/login/nickname: + post: + operationId: LoginNickname + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Returns a unique player token with a specified nickname for a user. + tags: + - AuthV1 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LoginNicknameRequest' + /auth/v1/{appId}/login/google: + post: + operationId: LoginGoogle + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LoginResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Returns a unique player token using a Google-signed OIDC `idToken`. + tags: + - AuthV1 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LoginGoogleRequest' + /billing/v1/balance: + get: + operationId: GetBalance + responses: + '200': + description: Ok + content: + application/json: + schema: + type: number + format: double + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + /billing/v1/paymentmethod: + get: + operationId: GetPaymentMethod + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/PaymentMethod' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + /billing/v1/customerportalurl: + post: + operationId: InitStripeCustomerPortalUrl + responses: + '200': + description: Ok + content: + application/json: + schema: + type: string + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CustomerPortalUrl' + /billing/v1/invoices: + get: + operationId: GetInvoices + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Invoice' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - BillingV1 + security: + - hathoraDevToken: [] + parameters: [] + /builds/v1/{appId}/list: + get: + operationId: GetBuilds + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Build' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns an array of + [builds](https://hathora.dev/docs/concepts/hathora-entities#build) for + an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /builds/v1/{appId}/info/{buildId}: + get: + operationId: GetBuildInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Build' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [build](https://hathora.dev/docs/concepts/hathora-entities#build). + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + /builds/v1/{appId}/create: + post: + operationId: CreateBuild + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Build' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Creates a new + [build](https://hathora.dev/docs/concepts/hathora-entities#build). + Responds with a `buildId` that you must pass to + [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) + to build the game server artifact. You can optionally pass in a + `buildTag` to associate an external version with a build. + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateBuildParams' + /builds/v1/{appId}/run/{buildId}: + post: + operationId: RunBuild + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Builds a game server artifact from a tarball you provide. Pass in the + `buildId` generated from + [`CreateBuild()`](https://hathora.dev/api#tag/BuildV1/operation/CreateBuild). + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + requestBody: + required: true + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + required: + - file + /builds/v1/{appId}/delete/{buildId}: + delete: + operationId: DeleteBuild + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Delete a + [build](https://hathora.dev/docs/concepts/hathora-entities#build). All + associated metadata is deleted. + tags: + - BuildV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + /deployments/v1/{appId}/list: + get: + operationId: GetDeployments + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Deployment' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns an array of + [deployments](https://hathora.dev/docs/concepts/hathora-entities#deployment) + for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /deployments/v1/{appId}/latest: + get: + operationId: GetLatestDeployment + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get the latest + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) + for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + /deployments/v1/{appId}/info/{deploymentId}: + get: + operationId: GetDeploymentInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment). + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: deploymentId + required: true + schema: + $ref: '#/components/schemas/DeploymentId' + /deployments/v1/{appId}/create/{buildId}: + post: + operationId: CreateDeployment + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Deployment' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment). + Creating a new deployment means all new rooms created will use the + latest deployment configuration, but existing games in progress will not + be affected. + tags: + - DeploymentV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: buildId + required: true + schema: + $ref: '#/components/schemas/BuildId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeploymentConfig' + /discovery/v1/ping: + get: + operationId: GetPingServiceEndpoints + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/DiscoveryResponse' + description: >- + Returns an array of all regions with a host and port that a client can + directly ping. Open a websocket connection to `wss://:/ws` + and send a packet. To calculate ping, measure the time it takes to get + an echo packet back. + tags: + - DiscoveryV1 + security: [] + parameters: [] + /lobby/v1/{appId}/create/private: + post: + operationId: CreatePrivateLobbyDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV1 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + - in: query + name: local + required: false + schema: + default: false + type: boolean + /lobby/v1/{appId}/create/public: + post: + operationId: CreatePublicLobbyDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV1 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + - in: query + name: local + required: false + schema: + default: false + type: boolean + /lobby/v1/{appId}/list: + get: + operationId: ListActivePublicLobbiesDeprecatedV1 + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Lobby' + type: array + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV1 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: local + required: false + schema: + default: false + type: boolean + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /lobby/v2/{appId}/create/private: + post: + operationId: CreatePrivateLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + /lobby/v2/{appId}/create/public: + post: + operationId: CreatePublicLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + /lobby/v2/{appId}/create/local: + post: + operationId: CreateLocalLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + properties: + initialConfig: + $ref: '#/components/schemas/LobbyInitialConfig' + region: + $ref: '#/components/schemas/Region' + required: + - initialConfig + - region + type: object + /lobby/v2/{appId}/create: + post: + operationId: CreateLobbyDeprecated + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new lobby for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + A lobby object is a wrapper around a + [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. + With a lobby, you get additional functionality like configuring the + visibility of the room, managing the state of a match, and retrieving a + list of public lobbies to display to players. + tags: + - LobbyV2 + deprecated: true + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateLobbyParams' + /lobby/v2/{appId}/list/public: + get: + operationId: ListActivePublicLobbiesDeprecatedV2 + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Lobby' + type: array + description: >- + Get all active lobbies for a an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter by optionally passing in a `region`. Use this endpoint to display + all public lobbies that a player can join in the game client. + tags: + - LobbyV2 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - description: >- + Region to filter by. If omitted, active public lobbies in all + regions will be returned. + in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /lobby/v2/{appId}/info/{roomId}: + get: + operationId: GetLobbyInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Get details for a lobby. + tags: + - LobbyV2 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /lobby/v2/{appId}/setState/{roomId}: + post: + operationId: SetLobbyState + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Lobby' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Set the state of a lobby. State is intended to be set by the server and + must be smaller than 1MB. Use this endpoint to store match data like + live player count to enforce max number of clients or persist end-game + data (i.e. winner or final scores). + tags: + - LobbyV2 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SetLobbyStateParams' + /lobby/v3/{appId}/create: + post: + operationId: CreateLobby + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '429': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new lobby for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + A lobby object is a wrapper around a + [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. + With a lobby, you get additional functionality like configuring the + visibility of the room, managing the state of a match, and retrieving a + list of public lobbies to display to players. + tags: + - LobbyV3 + security: + - playerAuth: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: shortCode + required: false + schema: + $ref: '#/components/schemas/ShortCode' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateLobbyV3Params' + /lobby/v3/{appId}/list/public: + get: + operationId: ListActivePublicLobbies + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/LobbyV3' + type: array + description: >- + Get all active lobbies for a given + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. Use this endpoint + to display all public lobbies that a player can join in the game client. + tags: + - LobbyV3 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - description: If omitted, active public lobbies in all regions will be returned. + in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /lobby/v3/{appId}/info/roomid/{roomId}: + get: + operationId: GetLobbyInfoByRoomId + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Get details for a lobby. + tags: + - LobbyV3 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /lobby/v3/{appId}/info/shortcode/{shortCode}: + get: + operationId: GetLobbyInfoByShortCode + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/LobbyV3' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a lobby. If 2 or more lobbies have the same `shortCode`, + then the most recently created lobby will be returned. + tags: + - LobbyV3 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: shortCode + required: true + schema: + $ref: '#/components/schemas/ShortCode' + /logs/v1/{appId}/all: + get: + operationId: GetLogsForApp + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns a stream of logs for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application) + using `appId`. + tags: + - LogV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /logs/v1/{appId}/process/{processId}: + get: + operationId: GetLogsForProcess + responses: + '200': + description: Ok + content: + application/octet-stream: + schema: + type: string + format: byte + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '410': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns a stream of logs for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + using `appId` and `processId`. + tags: + - LogV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + /logs/v1/{appId}/process/{processId}/download: + get: + operationId: DownloadLogForProcess + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '410': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Download entire log file for a stopped process. + tags: + - LogV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /logs/v1/{appId}/deployment/{deploymentId}: + get: + operationId: GetLogsForDeployment + responses: + '200': + description: Ok + content: + text/plain: + schema: + type: string + format: byte + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Returns a stream of logs for a + [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) + using `appId` and `deploymentId`. + tags: + - LogV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: deploymentId + required: true + schema: + $ref: '#/components/schemas/DeploymentId' + - in: query + name: follow + required: false + schema: + $ref: '#/components/schemas/LogsFollow' + - in: query + name: tailLines + required: false + schema: + $ref: '#/components/schemas/TailLines' + /management/v1/sendverificationemail: + post: + operationId: SendVerificationEmail + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/VerificationEmailResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - ManagementV1 + security: [] + parameters: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/VerificationEmailRequest' + /metrics/v1/{appId}/process/{processId}: + get: + operationId: GetMetrics + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/MetricsResponse' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get metrics for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + using `appId` and `processId`. + tags: + - MetricsV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + - description: Available metrics to query over time. + in: query + name: metrics + required: false + schema: + default: + - cpu + - memory + - rate_egress + type: array + items: + $ref: '#/components/schemas/MetricName' + - description: Unix timestamp. Default is current time. + in: query + name: end + required: false + schema: + format: double + type: number + - description: Unix timestamp. Default is -1 hour from `end`. + in: query + name: start + required: false + schema: + format: double + type: number + - in: query + name: step + required: false + schema: + $ref: '#/components/schemas/MetricsStep' + /processes/v1/{appId}/list/running: + get: + operationId: GetRunningProcesses + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/ProcessWithRooms' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retrieve 10 most recently started + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. + tags: + - ProcessesV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /processes/v1/{appId}/list/stopped: + get: + operationId: GetStoppedProcesses + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/Process' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retrieve 10 most recently stopped + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `region`. + tags: + - ProcessesV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: region + required: false + schema: + $ref: '#/components/schemas/Region' + /processes/v1/{appId}/info/{processId}: + get: + operationId: GetProcessInfoDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Process' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - ProcessesV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /processes/v2/{appId}/info/{processId}: + get: + operationId: GetProcessInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessV2' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get details for a + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /processes/v2/{appId}/list/latest: + get: + operationId: GetLatestProcesses + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/ProcessV2' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retrieve the 10 most recent + [processes](https://hathora.dev/docs/concepts/hathora-entities#process) + objects for an + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Filter the array by optionally passing in a `status` or `region`. + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: status + required: false + schema: + type: array + items: + $ref: '#/components/schemas/ProcessStatus' + - in: query + name: region + required: false + schema: + type: array + items: + $ref: '#/components/schemas/Region' + /processes/v2/{appId}/stop/{processId}: + post: + operationId: StopProcess + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Stops a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + immediately. + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /processes/v2/{appId}/create/{region}: + post: + operationId: CreateProcess + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessV2' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Creates a + [process](https://hathora.dev/docs/concepts/hathora-entities#process) + without a room. Use this to pre-allocate processes ahead of time so that + subsequent room assignment via + [CreateRoom()](https://hathora.dev/api#tag/RoomV2/operation/CreateRoom) + can be instant. + tags: + - ProcessesV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: region + required: true + schema: + $ref: '#/components/schemas/Region' + /rooms/v1/{appId}/create: + post: + operationId: CreateRoomDeprecated + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/RoomId' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomParams' + /rooms/v1/{appId}/info/{roomId}: + get: + operationId: GetRoomInfoDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Room' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v1/{appId}/list/{processId}/active: + get: + operationId: GetActiveRoomsForProcessDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v1/{appId}/list/{processId}/inactive: + get: + operationId: GetInactiveRoomsForProcessDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v1/{appId}/destroy/{roomId}: + post: + operationId: DestroyRoomDeprecated + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v1/{appId}/suspend/{roomId}: + post: + operationId: SuspendRoomDeprecated + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v1/{appId}/connectioninfo/{roomId}: + get: + operationId: GetConnectionInfoDeprecated + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ConnectionInfo' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV1 + deprecated: true + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/create: + post: + operationId: CreateRoom + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomResponse' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '403': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Create a new + [room](https://hathora.dev/docs/concepts/hathora-entities#room) for an + existing + [application](https://hathora.dev/docs/concepts/hathora-entities#application). + Poll the + [`GetConnectionInfo()`](https://hathora.dev/api#tag/RoomV2/operation/GetConnectionInfo) + endpoint to get connection details for an active room. + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: query + name: roomId + required: false + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoomParams' + /rooms/v2/{appId}/info/{roomId}: + get: + operationId: GetRoomInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/Room' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Retreive current and historical allocation data for a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/list/{processId}/active: + get: + operationId: GetActiveRoomsForProcess + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get all active + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a + given + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v2/{appId}/list/{processId}/inactive: + get: + operationId: GetInactiveRoomsForProcess + responses: + '200': + description: Ok + content: + application/json: + schema: + items: + $ref: '#/components/schemas/RoomWithoutAllocations' + type: array + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Get all inactive + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a + given + [process](https://hathora.dev/docs/concepts/hathora-entities#process). + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: processId + required: true + schema: + $ref: '#/components/schemas/ProcessId' + /rooms/v2/{appId}/destroy/{roomId}: + post: + operationId: DestroyRoom + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Destroy a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). All + associated metadata is deleted. + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/suspend/{roomId}: + post: + operationId: SuspendRoom + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Suspend a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). The + room is unallocated from the process but can be rescheduled later using + the same `roomId`. + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/connectioninfo/{roomId}: + get: + operationId: GetConnectionInfo + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ConnectionInfoV2' + '400': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '402': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: >- + Poll this endpoint to get connection details to a + [room](https://hathora.dev/docs/concepts/hathora-entities#room). Clients + can call this endpoint without authentication. + tags: + - RoomV2 + security: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + /rooms/v2/{appId}/update/{roomId}: + post: + operationId: UpdateRoomConfig + responses: + '204': + description: No content + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '500': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + tags: + - RoomV2 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: appId + required: true + schema: + $ref: '#/components/schemas/AppId' + - in: path + name: roomId + required: true + schema: + $ref: '#/components/schemas/RoomId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRoomConfigParams' + /tokens/v1/orgs/{orgId}: + get: + operationId: GetOrgTokens + responses: + '200': + description: Ok + content: + application/json: + schema: + $ref: '#/components/schemas/ListOrgTokens' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: List all organization tokens for a given org. + tags: + - OrgTokensV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + /tokens/v1/orgs/{orgId}/create: + post: + operationId: CreateOrgToken + responses: + '201': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedOrgToken' + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '422': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Create a new organization token. + tags: + - OrgTokensV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrgToken' + /tokens/v1/orgs/{orgId}/tokens/{orgTokenId}/revoke: + post: + operationId: RevokeOrgToken + responses: + '200': + description: Ok + content: + application/json: + schema: + type: boolean + '401': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + '404': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/ApiError' + description: Revoke an organization token. + tags: + - OrgTokensV1 + security: + - hathoraDevToken: [] + parameters: + - in: path + name: orgId + required: true + schema: + $ref: '#/components/schemas/OrgId' + - in: path + name: orgTokenId + required: true + schema: + $ref: '#/components/schemas/OrgId' +servers: + - url: https://api.hathora.dev + - url: / +tags: + - name: AppV1 + description: >- + Operations that allow you manage your + [applications](https://hathora.dev/docs/concepts/hathora-entities#application). + - name: AuthV1 + description: >- + Operations that allow you to generate a Hathora-signed [JSON web token + (JWT)](https://jwt.io/) for [player + authentication](https://hathora.dev/docs/lobbies-and-matchmaking/auth-service). + - name: BuildV1 + description: >- + Operations that allow you create and manage your + [builds](https://hathora.dev/docs/concepts/hathora-entities#build). + - name: DeploymentV1 + description: >- + Operations that allow you configure and manage an application's + [build](https://hathora.dev/docs/concepts/hathora-entities#build) at + runtime. + - name: DiscoveryV1 + description: >- + Service that allows clients to directly ping all Hathora regions to get + latency information + - name: LobbyV3 + description: >- + Operations to create and manage lobbies using our [Lobby + Service](https://hathora.dev/docs/lobbies-and-matchmaking/lobby-service). + - name: LogV1 + description: >- + Operations to get logs by + [applications](https://hathora.dev/docs/concepts/hathora-entities#application), + [processes](https://hathora.dev/docs/concepts/hathora-entities#process), + and + [deployments](https://hathora.dev/docs/concepts/hathora-entities#deployment). + We store 20GB of logs data. + - name: MetricsV1 + description: >- + Operations to get metrics by + [process](https://hathora.dev/docs/concepts/hathora-entities#process). We + store 72 hours of metrics data. + - name: ProcessesV2 + description: >- + Operations to get data on active and stopped + [processes](https://hathora.dev/docs/concepts/hathora-entities#process). + - name: RoomV2 + description: >- + Operations to create, manage, and connect to + [rooms](https://hathora.dev/docs/concepts/hathora-entities#room). + - name: LobbyV1 + description: Deprecated. Use [LobbyV3](https://hathora.dev/api#tag/LobbyV3). + - name: LobbyV2 + description: Deprecated. Use [LobbyV3](https://hathora.dev/api#tag/LobbyV3). + - name: ProcessesV1 + description: Deprecated. Use [ProcessesV2](https://hathora.dev/api#tag/ProcessesV2). + - name: RoomV1 + description: Deprecated. Use [RoomV2](https://hathora.dev/api#tag/RoomV2). +x-speakeasy-globals: + parameters: + - in: path + name: appId + schema: + $ref: '#/components/schemas/AppId' diff --git a/sdks/db/processed-custom-request-cache/hathora.dev.yaml b/sdks/db/processed-custom-request-cache/hathora.dev.yaml new file mode 100644 index 0000000000..078797709d --- /dev/null +++ b/sdks/db/processed-custom-request-cache/hathora.dev.yaml @@ -0,0 +1,25 @@ +processed: + securitySchemes: + hathoraDevToken: + type: http + scheme: bearer + bearerFormat: JWT + playerAuth: + type: http + scheme: bearer + bearerFormat: JWT + apiBaseUrl: https://api.hathora.dev + apiVersion: 0.0.1 + apiDescription: >- + Welcome to the Hathora Cloud API documentation! Learn how to use the Hathora + Cloud APIs to build and scale your game servers globally. + apiTitle: Hathora Cloud API + endpoints: 67 + sdkMethods: 67 + schemas: 81 + parameters: 157 + originalCustomRequest: + type: GET + url: https://hathora.dev/swagger.json + customRequestSpecFilename: hathora.dev.yaml + difficultyScore: 146.75 diff --git a/sdks/db/progress/hathora-progress.yaml b/sdks/db/progress/hathora-progress.yaml new file mode 100644 index 0000000000..367d048517 --- /dev/null +++ b/sdks/db/progress/hathora-progress.yaml @@ -0,0 +1,269 @@ +examples: {} +examples_2: {} +examples_3: {} +operationIds: + /apps/v1/create: + post: AppV1_createNewApplication + /apps/v1/delete/{appId}: + delete: AppV1_deleteApplicationById + /apps/v1/info/{appId}: + get: AppV1_getAppInfo + /apps/v1/list: + get: AppV1_getAppList + /apps/v1/update/{appId}: + post: AppV1_updateApplicationData + /auth/v1/{appId}/login/anonymous: + post: AuthV1_generatePlayerToken + /auth/v1/{appId}/login/google: + post: AuthV1_getUniquePlayerToken + /auth/v1/{appId}/login/nickname: + post: AuthV1_generateUniquePlayerToken + /billing/v1/balance: + get: BillingV1_getBalance + /billing/v1/customerportalurl: + post: BillingV1_createCustomerPortalUrl + /billing/v1/invoices: + get: BillingV1_listInvoices + /billing/v1/paymentmethod: + get: BillingV1_getPaymentMethod + /builds/v1/{appId}/create: + post: BuildV1_createBuild + /builds/v1/{appId}/delete/{buildId}: + delete: BuildV1_deleteBuildById + /builds/v1/{appId}/info/{buildId}: + get: BuildV1_getApplicationInfo + /builds/v1/{appId}/list: + get: BuildV1_getApplicationBuilds + /builds/v1/{appId}/run/{buildId}: + post: BuildV1_buildServerArtifact + /deployments/v1/{appId}/create/{buildId}: + post: DeploymentV1_createNewDeployment + /deployments/v1/{appId}/info/{deploymentId}: + get: DeploymentV1_getInfo + /deployments/v1/{appId}/latest: + get: DeploymentV1_getLatestDeploymentByAppId + /deployments/v1/{appId}/list: + get: DeploymentV1_listDeploymentsByAppId + /discovery/v1/ping: + get: DiscoveryV1_getEndpoints + /lobby/v1/{appId}/create/private: + post: LobbyV1_createPrivateLobby + /lobby/v1/{appId}/create/public: + post: LobbyV1_createPublicLobby + /lobby/v1/{appId}/list: + get: LobbyV1_listLobbiesByAppId + /lobby/v2/{appId}/create: + post: LobbyV2_createLobby + /lobby/v2/{appId}/create/local: + post: LobbyV2_createLocalLobby + /lobby/v2/{appId}/create/private: + post: LobbyV2_createPrivateLobby + /lobby/v2/{appId}/create/public: + post: LobbyV2_createPublicLobby + /lobby/v2/{appId}/info/{roomId}: + get: LobbyV2_getLobbyDetails + /lobby/v2/{appId}/list/public: + get: LobbyV2_listPublicLobbies + /lobby/v2/{appId}/setState/{roomId}: + post: LobbyV2_setLobbyState + /lobby/v3/{appId}/create: + post: LobbyV3_createNewLobby + /lobby/v3/{appId}/info/roomid/{roomId}: + get: LobbyV3_getLobbyDetails + /lobby/v3/{appId}/info/shortcode/{shortCode}: + get: LobbyV3_getInfoByShortCode + /lobby/v3/{appId}/list/public: + get: LobbyV3_listPublicLobbies + /logs/v1/{appId}/all: + get: LogV1_getAllLogs + /logs/v1/{appId}/deployment/{deploymentId}: + get: LogV1_getLogStream + /logs/v1/{appId}/process/{processId}: + get: LogV1_streamLogsForProcess + /logs/v1/{appId}/process/{processId}/download: + get: LogV1_downloadLogForProcess + /management/v1/sendverificationemail: + post: ManagementV1_sendVerificationEmail + /metrics/v1/{appId}/process/{processId}: + get: MetricsV1_getProcessMetrics + /processes/v1/{appId}/info/{processId}: + get: ProcessesV1_getProcessInfo + /processes/v1/{appId}/list/running: + get: ProcessesV1_listRunningProcesses + /processes/v1/{appId}/list/stopped: + get: ProcessesV1_getRecentlyStoppedProcesses + /processes/v2/{appId}/create/{region}: + post: ProcessesV2_createProcessWithoutRoom + /processes/v2/{appId}/info/{processId}: + get: ProcessesV2_getProcessInfo + /processes/v2/{appId}/list/latest: + get: ProcessesV2_getLatestProcessesList + /processes/v2/{appId}/stop/{processId}: + post: ProcessesV2_stopProcessById + /rooms/v1/{appId}/connectioninfo/{roomId}: + get: RoomV1_getConnectionInfo + /rooms/v1/{appId}/create: + post: RoomV1_createRoom + /rooms/v1/{appId}/destroy/{roomId}: + post: RoomV1_destroyRoom + /rooms/v1/{appId}/info/{roomId}: + get: RoomV1_getRoomInfo + /rooms/v1/{appId}/list/{processId}/active: + get: RoomV1_getActiveRooms + /rooms/v1/{appId}/list/{processId}/inactive: + get: RoomV1_getInactiveRooms + /rooms/v1/{appId}/suspend/{roomId}: + post: RoomV1_suspendRoom + /rooms/v2/{appId}/connectioninfo/{roomId}: + get: RoomV2_getConnectionInfo + /rooms/v2/{appId}/create: + post: RoomV2_createRoom + /rooms/v2/{appId}/destroy/{roomId}: + post: RoomV2_destroyRoomAllocation + /rooms/v2/{appId}/info/{roomId}: + get: RoomV2_getAllocationData + /rooms/v2/{appId}/list/{processId}/active: + get: RoomV2_listActiveRooms + /rooms/v2/{appId}/list/{processId}/inactive: + get: RoomV2_listInactiveRooms + /rooms/v2/{appId}/suspend/{roomId}: + post: RoomV2_suspendRoomAllocation + /rooms/v2/{appId}/update/{roomId}: + post: RoomV2_updateRoomAllocation + /tokens/v1/orgs/{orgId}: + get: OrgTokensV1_listOrgTokens + /tokens/v1/orgs/{orgId}/create: + post: OrgTokensV1_createNewOrgToken + /tokens/v1/orgs/{orgId}/tokens/{orgTokenId}/revoke: + post: OrgTokensV1_revokeOrgToken +operationTags: {} +renameTags: {} +requestSchemaNames: + /builds/v1/{appId}/run/{buildId}: + post: + multipart/form-data: BuildV1BuildServerArtifactRequest + /lobby/v2/{appId}/create/local: + post: + application/json: LobbyV2CreateLocalLobbyRequest + /lobby/v2/{appId}/create/private: + post: + application/json: LobbyV2CreatePrivateLobbyRequest + /lobby/v2/{appId}/create/public: + post: + application/json: LobbyV2CreatePublicLobbyRequest +responseDescriptions: {} +responseSchemaNames: + /apps/v1/list: + get: + '200': + application/json: AppV1GetAppListResponse + /billing/v1/balance: + get: + '200': + application/json: BillingV1GetBalanceResponse + /billing/v1/customerportalurl: + post: + '200': + application/json: BillingV1CreateCustomerPortalUrlResponse + /billing/v1/invoices: + get: + '200': + application/json: BillingV1ListInvoicesResponse + /builds/v1/{appId}/list: + get: + '200': + application/json: BuildV1GetApplicationBuildsResponse + /builds/v1/{appId}/run/{buildId}: + post: + '200': + text/plain: BuildV1BuildServerArtifactResponse + /deployments/v1/{appId}/list: + get: + '200': + application/json: DeploymentV1ListDeploymentsByAppIdResponse + /lobby/v1/{appId}/list: + get: + '200': + application/json: LobbyV1ListLobbiesByAppIdResponse + /lobby/v2/{appId}/list/public: + get: + '200': + application/json: LobbyV2ListPublicLobbiesResponse + /lobby/v3/{appId}/list/public: + get: + '200': + application/json: LobbyV3ListPublicLobbiesResponse + /logs/v1/{appId}/all: + get: + '200': + text/plain: LogV1GetAllLogsResponse + /logs/v1/{appId}/deployment/{deploymentId}: + get: + '200': + text/plain: LogV1GetLogStreamResponse + /logs/v1/{appId}/process/{processId}: + get: + '200': + application/octet-stream: LogV1StreamLogsForProcessResponse + /logs/v1/{appId}/process/{processId}/download: + get: + '200': + text/plain: LogV1DownloadLogForProcessResponse + /processes/v1/{appId}/list/running: + get: + '200': + application/json: ProcessesV1ListRunningProcessesResponse + /processes/v1/{appId}/list/stopped: + get: + '200': + application/json: ProcessesV1GetRecentlyStoppedProcessesResponse + /processes/v2/{appId}/list/latest: + get: + '200': + application/json: ProcessesV2GetLatestProcessesListResponse + /rooms/v1/{appId}/list/{processId}/active: + get: + '200': + application/json: RoomV1GetActiveRoomsResponse + /rooms/v1/{appId}/list/{processId}/inactive: + get: + '200': + application/json: RoomV1GetInactiveRoomsResponse + /rooms/v2/{appId}/list/{processId}/active: + get: + '200': + application/json: RoomV2ListActiveRoomsResponse + /rooms/v2/{appId}/list/{processId}/inactive: + get: + '200': + application/json: RoomV2ListInactiveRoomsResponse + /tokens/v1/orgs/{orgId}/tokens/{orgTokenId}/revoke: + post: + '200': + application/json: OrgTokensV1RevokeOrgTokenResponse +securityParameters: + end: + query: false + follow: + query: false + local: + query: false + metrics: + query: false + region: + query: false + roomId: + query: false + shortCode: + query: false + start: + query: false + status: + query: false + step: + query: false + tailLines: + query: false +validServerUrls: + '': + url: '' diff --git a/sdks/db/published/from-custom-request_hathora.dev.json b/sdks/db/published/from-custom-request_hathora.dev.json new file mode 100644 index 0000000000..f1856f6ddd --- /dev/null +++ b/sdks/db/published/from-custom-request_hathora.dev.json @@ -0,0 +1,2995 @@ +{ + "securitySchemes": { + "hathoraDevToken": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT" + }, + "playerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT" + } + }, + "apiBaseUrl": "https://api.hathora.dev", + "apiVersion": "0.0.1", + "apiDescription": "Welcome to the Hathora Cloud API documentation! Learn how to use the Hathora Cloud APIs to build and scale your game servers globally.", + "apiTitle": "Hathora Cloud API", + "endpoints": 67, + "sdkMethods": 67, + "schemas": 104, + "parameters": 157, + "originalCustomRequest": { + "type": "GET", + "url": "https://hathora.dev/swagger.json" + }, + "customRequestSpecFilename": "hathora.dev.yaml", + "difficultyScore": 146.75, + "difficulty": "Medium", + "company": "Hathora", + "sdkName": "hathora-{language}-sdk", + "clientName": "Hathora", + "metaDescription": "A venture-backed start-up building a modern cloud optimized for multiplayer games.", + "apiStatusUrls": "inherit", + "homepage": "hathora.dev/", + "developerDocumentation": "hathora.dev/api", + "categories": [ + "gaming", + "multiplayer_games", + "infrastructure", + "server_orchestration" + ], + "category": "Gaming", + "methods": [ + { + "url": "/apps/v1/list", + "method": "getAppList", + "httpMethod": "get", + "tag": "AppV1", + "typeScriptTag": "appV1", + "description": "Returns an unsorted list of your organization’s [applications](https://hathora.dev/docs/concepts/hathora-entities#application). An application is uniquely identified by an `appId`.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/apps/v1/create", + "method": "createNewApplication", + "httpMethod": "post", + "tag": "AppV1", + "typeScriptTag": "appV1", + "description": "Create a new [application](https://hathora.dev/docs/concepts/hathora-entities#application).", + "parameters": [ + { + "name": "authConfiguration", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "appName", + "schema": "string", + "required": true, + "description": "", + "example": "minecraft" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "An application object is the top level namespace for the game server." + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/apps/v1/update/{appId}", + "method": "updateApplicationData", + "httpMethod": "post", + "tag": "AppV1", + "typeScriptTag": "appV1", + "description": "Update data for an existing [application](https://hathora.dev/docs/concepts/hathora-entities#application) using `appId`.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "authConfiguration", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "appName", + "schema": "string", + "required": true, + "description": "", + "example": "minecraft" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "An application object is the top level namespace for the game server." + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/apps/v1/info/{appId}", + "method": "getAppInfo", + "httpMethod": "get", + "tag": "AppV1", + "typeScriptTag": "appV1", + "description": "Get details for an [application](https://hathora.dev/docs/concepts/hathora-entities#application) using `appId`.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "An application object is the top level namespace for the game server." + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/apps/v1/delete/{appId}", + "method": "deleteApplicationById", + "httpMethod": "delete", + "tag": "AppV1", + "typeScriptTag": "appV1", + "description": "Delete an [application](https://hathora.dev/docs/concepts/hathora-entities#application) using `appId`. Your organization will lose access to this application.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No content" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/auth/v1/{appId}/login/anonymous", + "method": "generatePlayerToken", + "httpMethod": "post", + "tag": "AuthV1", + "typeScriptTag": "authV1", + "description": "Returns a unique player token for an anonymous user.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/auth/v1/{appId}/login/nickname", + "method": "generateUniquePlayerToken", + "httpMethod": "post", + "tag": "AuthV1", + "typeScriptTag": "authV1", + "description": "Returns a unique player token with a specified nickname for a user.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "nickname", + "schema": "string", + "required": true, + "description": "", + "example": "squiddytwoshoes" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/auth/v1/{appId}/login/google", + "method": "getUniquePlayerToken", + "httpMethod": "post", + "tag": "AuthV1", + "typeScriptTag": "authV1", + "description": "Returns a unique player token using a Google-signed OIDC `idToken`.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "idToken", + "schema": "string", + "required": true, + "description": "", + "example": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImZkNDhhNzUxMzhkOWQ0OGYwYWE2MzVlZjU2OWM0ZTE5NmY3YWU4ZDYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiYXpwIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiODQ4NDEyODI2Nzg4LW00bXNyYjZxNDRkbTJ1ZTNrZ3Z1aTBmcTdrZGE1NWxzLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwic3ViIjoiMTE0NTQyMzMwNzI3MTU2MTMzNzc2IiwiZW1haWwiOiJocGFdkeivmeuzQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdF9oYXNoIjoidno1NGhhdTNxbnVR" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/billing/v1/balance", + "method": "getBalance", + "httpMethod": "get", + "tag": "BillingV1", + "typeScriptTag": "billingV1", + "description": "", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/billing/v1/paymentmethod", + "method": "getPaymentMethod", + "httpMethod": "get", + "tag": "BillingV1", + "typeScriptTag": "billingV1", + "description": "", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "Make all properties in T optional" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/billing/v1/customerportalurl", + "method": "createCustomerPortalUrl", + "httpMethod": "post", + "tag": "BillingV1", + "typeScriptTag": "billingV1", + "description": "", + "parameters": [ + { + "name": "returnUrl", + "schema": "string", + "required": true, + "description": "", + "example": "RETURNURL" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/billing/v1/invoices", + "method": "listInvoices", + "httpMethod": "get", + "tag": "BillingV1", + "typeScriptTag": "billingV1", + "description": "", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/builds/v1/{appId}/list", + "method": "getApplicationBuilds", + "httpMethod": "get", + "tag": "BuildV1", + "typeScriptTag": "buildV1", + "description": "Returns an array of [builds](https://hathora.dev/docs/concepts/hathora-entities#build) for an [application](https://hathora.dev/docs/concepts/hathora-entities#application).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/builds/v1/{appId}/info/{buildId}", + "method": "getApplicationInfo", + "httpMethod": "get", + "tag": "BuildV1", + "typeScriptTag": "buildV1", + "description": "Get details for a [build](https://hathora.dev/docs/concepts/hathora-entities#build).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "buildId", + "schema": "integer", + "required": true, + "description": "", + "example": 1 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A build represents a game server artifact and its associated metadata." + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/builds/v1/{appId}/create", + "method": "createBuild", + "httpMethod": "post", + "tag": "BuildV1", + "typeScriptTag": "buildV1", + "description": "Creates a new [build](https://hathora.dev/docs/concepts/hathora-entities#build). Responds with a `buildId` that you must pass to [`RunBuild()`](https://hathora.dev/api#tag/BuildV1/operation/RunBuild) to build the game server artifact. You can optionally pass in a `buildTag` to associate an external version with a build.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "buildTag", + "schema": "string", + "description": "", + "example": "0.1.14-14c793" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "A build represents a game server artifact and its associated metadata." + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/builds/v1/{appId}/run/{buildId}", + "method": "buildServerArtifact", + "httpMethod": "post", + "tag": "BuildV1", + "typeScriptTag": "buildV1", + "description": "Builds a game server artifact from a tarball you provide. Pass in the `buildId` generated from [`CreateBuild()`](https://hathora.dev/api#tag/BuildV1/operation/CreateBuild).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "buildId", + "schema": "integer", + "required": true, + "description": "", + "example": 1 + }, + { + "name": "file", + "schema": "string", + "required": true, + "description": "", + "example": "FILE" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/builds/v1/{appId}/delete/{buildId}", + "method": "deleteBuildById", + "httpMethod": "delete", + "tag": "BuildV1", + "typeScriptTag": "buildV1", + "description": "Delete a [build](https://hathora.dev/docs/concepts/hathora-entities#build). All associated metadata is deleted.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "buildId", + "schema": "integer", + "required": true, + "description": "", + "example": 1 + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No content" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/deployments/v1/{appId}/list", + "method": "listDeploymentsByAppId", + "httpMethod": "get", + "tag": "DeploymentV1", + "typeScriptTag": "deploymentV1", + "description": "Returns an array of [deployments](https://hathora.dev/docs/concepts/hathora-entities#deployment) for an [application](https://hathora.dev/docs/concepts/hathora-entities#application).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/deployments/v1/{appId}/latest", + "method": "getLatestDeploymentByAppId", + "httpMethod": "get", + "tag": "DeploymentV1", + "typeScriptTag": "deploymentV1", + "description": "Get the latest [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) for an [application](https://hathora.dev/docs/concepts/hathora-entities#application).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Deployment is a versioned configuration for a build that describes runtime behavior." + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/deployments/v1/{appId}/info/{deploymentId}", + "method": "getInfo", + "httpMethod": "get", + "tag": "DeploymentV1", + "typeScriptTag": "deploymentV1", + "description": "Get details for a [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "deploymentId", + "schema": "integer", + "required": true, + "description": "", + "example": 1 + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Deployment is a versioned configuration for a build that describes runtime behavior." + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/deployments/v1/{appId}/create/{buildId}", + "method": "createNewDeployment", + "httpMethod": "post", + "tag": "DeploymentV1", + "typeScriptTag": "deploymentV1", + "description": "Create a new [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment). Creating a new deployment means all new rooms created will use the latest deployment configuration, but existing games in progress will not be affected.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "buildId", + "schema": "integer", + "required": true, + "description": "", + "example": 1 + }, + { + "name": "idleTimeoutEnabled", + "schema": "boolean", + "required": false, + "description": "", + "default": "true" + }, + { + "name": "env", + "schema": "array", + "required": true, + "description": "" + }, + { + "name": "roomsPerProcess", + "schema": "integer", + "required": true, + "description": "", + "example": 3 + }, + { + "name": "planName", + "schema": "string", + "required": true, + "description": "", + "example": "tiny" + }, + { + "name": "additionalContainerPorts", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "transportType", + "schema": "string", + "required": true, + "description": "", + "example": "TRANSPORTTYPE" + }, + { + "name": "containerPort", + "schema": "integer", + "required": true, + "description": "", + "example": 4000 + } + ], + "responses": [ + { + "statusCode": "201", + "description": "Deployment is a versioned configuration for a build that describes runtime behavior." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/discovery/v1/ping", + "method": "getEndpoints", + "httpMethod": "get", + "tag": "DiscoveryV1", + "typeScriptTag": "discoveryV1", + "description": "Returns an array of all regions with a host and port that a client can directly ping. Open a websocket connection to `wss://:/ws` and send a packet. To calculate ping, measure the time it takes to get an echo packet back.", + "parameters": [], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/lobby/v1/{appId}/create/private", + "method": "createPrivateLobby", + "httpMethod": "post", + "tag": "LobbyV1", + "typeScriptTag": "lobbyV1", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "region", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "local", + "schema": "boolean", + "required": false, + "description": "", + "default": false + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Unique identifier to a game session or match. Use the default system generated ID or overwrite it with your own.\nNote: error will be returned if `roomId` is not globally unique." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/lobby/v1/{appId}/create/public", + "method": "createPublicLobby", + "httpMethod": "post", + "tag": "LobbyV1", + "typeScriptTag": "lobbyV1", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "region", + "schema": "string", + "required": false, + "description": "" + }, + { + "name": "local", + "schema": "boolean", + "required": false, + "description": "", + "default": false + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Unique identifier to a game session or match. Use the default system generated ID or overwrite it with your own.\nNote: error will be returned if `roomId` is not globally unique." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/lobby/v1/{appId}/list", + "method": "listLobbiesByAppId", + "httpMethod": "get", + "tag": "LobbyV1", + "typeScriptTag": "lobbyV1", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "local", + "schema": "boolean", + "required": false, + "description": "", + "default": false + }, + { + "name": "region", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/lobby/v2/{appId}/create/private", + "method": "createPrivateLobby", + "httpMethod": "post", + "tag": "LobbyV2", + "typeScriptTag": "lobbyV2", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": false, + "description": "", + "example": "2swovpy1fnunu" + }, + { + "name": "initialConfig", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "region", + "schema": "string", + "required": true, + "description": "", + "example": "REGION" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "A lobby object allows you to store and manage metadata for your rooms." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/lobby/v2/{appId}/create/public", + "method": "createPublicLobby", + "httpMethod": "post", + "tag": "LobbyV2", + "typeScriptTag": "lobbyV2", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": false, + "description": "", + "example": "2swovpy1fnunu" + }, + { + "name": "initialConfig", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "region", + "schema": "string", + "required": true, + "description": "", + "example": "REGION" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "A lobby object allows you to store and manage metadata for your rooms." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/lobby/v2/{appId}/create/local", + "method": "createLocalLobby", + "httpMethod": "post", + "tag": "LobbyV2", + "typeScriptTag": "lobbyV2", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": false, + "description": "", + "example": "2swovpy1fnunu" + }, + { + "name": "initialConfig", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "region", + "schema": "string", + "required": true, + "description": "", + "example": "REGION" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "A lobby object allows you to store and manage metadata for your rooms." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/lobby/v2/{appId}/create", + "method": "createLobby", + "httpMethod": "post", + "tag": "LobbyV2", + "typeScriptTag": "lobbyV2", + "description": "Create a new lobby for an [application](https://hathora.dev/docs/concepts/hathora-entities#application). A lobby object is a wrapper around a [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. With a lobby, you get additional functionality like configuring the visibility of the room, managing the state of a match, and retrieving a list of public lobbies to display to players.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": false, + "description": "", + "example": "2swovpy1fnunu" + }, + { + "name": "visibility", + "schema": "string", + "required": true, + "description": "", + "example": "private" + }, + { + "name": "initialConfig", + "schema": "object", + "required": true, + "description": "" + }, + { + "name": "region", + "schema": "string", + "required": true, + "description": "", + "example": "REGION" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "A lobby object allows you to store and manage metadata for your rooms." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/lobby/v2/{appId}/list/public", + "method": "listPublicLobbies", + "httpMethod": "get", + "tag": "LobbyV2", + "typeScriptTag": "lobbyV2", + "description": "Get all active lobbies for a an [application](https://hathora.dev/docs/concepts/hathora-entities#application). Filter by optionally passing in a `region`. Use this endpoint to display all public lobbies that a player can join in the game client.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "region", + "schema": "string", + "required": false, + "description": "Region to filter by. If omitted, active public lobbies in all regions will be returned." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/lobby/v2/{appId}/info/{roomId}", + "method": "getLobbyDetails", + "httpMethod": "get", + "tag": "LobbyV2", + "typeScriptTag": "lobbyV2", + "description": "Get details for a lobby.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A lobby object allows you to store and manage metadata for your rooms." + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/lobby/v2/{appId}/setState/{roomId}", + "method": "setLobbyState", + "httpMethod": "post", + "tag": "LobbyV2", + "typeScriptTag": "lobbyV2", + "description": "Set the state of a lobby. State is intended to be set by the server and must be smaller than 1MB. Use this endpoint to store match data like live player count to enforce max number of clients or persist end-game data (i.e. winner or final scores).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + }, + { + "name": "state", + "schema": "object", + "required": true, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A lobby object allows you to store and manage metadata for your rooms." + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/lobby/v3/{appId}/create", + "method": "createNewLobby", + "httpMethod": "post", + "tag": "LobbyV3", + "typeScriptTag": "lobbyV3", + "description": "Create a new lobby for an [application](https://hathora.dev/docs/concepts/hathora-entities#application). A lobby object is a wrapper around a [room](https://hathora.dev/docs/concepts/hathora-entities#room) object. With a lobby, you get additional functionality like configuring the visibility of the room, managing the state of a match, and retrieving a list of public lobbies to display to players.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "shortCode", + "schema": "string", + "required": false, + "description": "", + "example": "LFG4" + }, + { + "name": "roomId", + "schema": "string", + "required": false, + "description": "", + "example": "2swovpy1fnunu" + }, + { + "name": "visibility", + "schema": "string", + "required": true, + "description": "", + "example": "private" + }, + { + "name": "roomConfig", + "schema": "string", + "required": false, + "description": "", + "example": "{\"name\":\"my-room\"}" + }, + { + "name": "region", + "schema": "string", + "required": true, + "description": "", + "example": "REGION" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "A lobby object allows you to store and manage metadata for your rooms." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "429", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/lobby/v3/{appId}/list/public", + "method": "listPublicLobbies", + "httpMethod": "get", + "tag": "LobbyV3", + "typeScriptTag": "lobbyV3", + "description": "Get all active lobbies for a given [application](https://hathora.dev/docs/concepts/hathora-entities#application). Filter the array by optionally passing in a `region`. Use this endpoint to display all public lobbies that a player can join in the game client.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "region", + "schema": "string", + "required": false, + "description": "If omitted, active public lobbies in all regions will be returned." + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + } + ] + }, + { + "url": "/lobby/v3/{appId}/info/roomid/{roomId}", + "method": "getLobbyDetails", + "httpMethod": "get", + "tag": "LobbyV3", + "typeScriptTag": "lobbyV3", + "description": "Get details for a lobby.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A lobby object allows you to store and manage metadata for your rooms." + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/lobby/v3/{appId}/info/shortcode/{shortCode}", + "method": "getInfoByShortCode", + "httpMethod": "get", + "tag": "LobbyV3", + "typeScriptTag": "lobbyV3", + "description": "Get details for a lobby. If 2 or more lobbies have the same `shortCode`, then the most recently created lobby will be returned.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "shortCode", + "schema": "string", + "required": true, + "description": "", + "example": "LFG4" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A lobby object allows you to store and manage metadata for your rooms." + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/logs/v1/{appId}/all", + "method": "getAllLogs", + "httpMethod": "get", + "tag": "LogV1", + "typeScriptTag": "logV1", + "description": "Returns a stream of logs for an [application](https://hathora.dev/docs/concepts/hathora-entities#application) using `appId`.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "follow", + "schema": "boolean", + "required": false, + "description": "", + "default": "false" + }, + { + "name": "tailLines", + "schema": "integer", + "required": false, + "description": "", + "example": 100, + "default": "100" + }, + { + "name": "region", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/logs/v1/{appId}/process/{processId}", + "method": "streamLogsForProcess", + "httpMethod": "get", + "tag": "LogV1", + "typeScriptTag": "logV1", + "description": "Returns a stream of logs for a [process](https://hathora.dev/docs/concepts/hathora-entities#process) using `appId` and `processId`.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "processId", + "schema": "string", + "required": true, + "description": "", + "example": "cbfcddd2-0006-43ae-996c-995fff7bed2e" + }, + { + "name": "follow", + "schema": "boolean", + "required": false, + "description": "", + "default": "false" + }, + { + "name": "tailLines", + "schema": "integer", + "required": false, + "description": "", + "example": 100, + "default": "100" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "410", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/logs/v1/{appId}/process/{processId}/download", + "method": "downloadLogForProcess", + "httpMethod": "get", + "tag": "LogV1", + "typeScriptTag": "logV1", + "description": "Download entire log file for a stopped process.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "processId", + "schema": "string", + "required": true, + "description": "", + "example": "cbfcddd2-0006-43ae-996c-995fff7bed2e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "410", + "description": "" + } + ] + }, + { + "url": "/logs/v1/{appId}/deployment/{deploymentId}", + "method": "getLogStream", + "httpMethod": "get", + "tag": "LogV1", + "typeScriptTag": "logV1", + "description": "Returns a stream of logs for a [deployment](https://hathora.dev/docs/concepts/hathora-entities#deployment) using `appId` and `deploymentId`.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "deploymentId", + "schema": "integer", + "required": true, + "description": "", + "example": 1 + }, + { + "name": "follow", + "schema": "boolean", + "required": false, + "description": "", + "default": "false" + }, + { + "name": "tailLines", + "schema": "integer", + "required": false, + "description": "", + "example": 100, + "default": "100" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/management/v1/sendverificationemail", + "method": "sendVerificationEmail", + "httpMethod": "post", + "tag": "ManagementV1", + "typeScriptTag": "managementV1", + "description": "", + "parameters": [ + { + "name": "userId", + "schema": "string", + "required": true, + "description": "", + "example": "USERID" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/metrics/v1/{appId}/process/{processId}", + "method": "getProcessMetrics", + "httpMethod": "get", + "tag": "MetricsV1", + "typeScriptTag": "metricsV1", + "description": "Get metrics for a [process](https://hathora.dev/docs/concepts/hathora-entities#process) using `appId` and `processId`.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "processId", + "schema": "string", + "required": true, + "description": "", + "example": "cbfcddd2-0006-43ae-996c-995fff7bed2e" + }, + { + "name": "metrics", + "schema": "array", + "required": false, + "description": "Available metrics to query over time.", + "default": [ + "cpu", + "memory", + "rate_egress" + ] + }, + { + "name": "end", + "schema": "number", + "required": false, + "description": "Unix timestamp. Default is current time." + }, + { + "name": "start", + "schema": "number", + "required": false, + "description": "Unix timestamp. Default is -1 hour from `end`." + }, + { + "name": "step", + "schema": "integer", + "required": false, + "description": "", + "default": "60" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Construct a type with a set of properties K of type T" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/processes/v1/{appId}/list/running", + "method": "listRunningProcesses", + "httpMethod": "get", + "tag": "ProcessesV1", + "typeScriptTag": "processesV1", + "description": "Retrieve 10 most recently started [process](https://hathora.dev/docs/concepts/hathora-entities#process) objects for an [application](https://hathora.dev/docs/concepts/hathora-entities#application). Filter the array by optionally passing in a `region`.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "region", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/processes/v1/{appId}/list/stopped", + "method": "getRecentlyStoppedProcesses", + "httpMethod": "get", + "tag": "ProcessesV1", + "typeScriptTag": "processesV1", + "description": "Retrieve 10 most recently stopped [process](https://hathora.dev/docs/concepts/hathora-entities#process) objects for an [application](https://hathora.dev/docs/concepts/hathora-entities#application). Filter the array by optionally passing in a `region`.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "region", + "schema": "string", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/processes/v1/{appId}/info/{processId}", + "method": "getProcessInfo", + "httpMethod": "get", + "tag": "ProcessesV1", + "typeScriptTag": "processesV1", + "description": "Get details for a [process](https://hathora.dev/docs/concepts/hathora-entities#process).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "processId", + "schema": "string", + "required": true, + "description": "", + "example": "cbfcddd2-0006-43ae-996c-995fff7bed2e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A process object represents a runtime instance of your game server and its metadata." + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/processes/v2/{appId}/info/{processId}", + "method": "getProcessInfo", + "httpMethod": "get", + "tag": "ProcessesV2", + "typeScriptTag": "processesV2", + "description": "Get details for a [process](https://hathora.dev/docs/concepts/hathora-entities#process).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "processId", + "schema": "string", + "required": true, + "description": "", + "example": "cbfcddd2-0006-43ae-996c-995fff7bed2e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/processes/v2/{appId}/list/latest", + "method": "getLatestProcessesList", + "httpMethod": "get", + "tag": "ProcessesV2", + "typeScriptTag": "processesV2", + "description": "Retrieve the 10 most recent [processes](https://hathora.dev/docs/concepts/hathora-entities#process) objects for an [application](https://hathora.dev/docs/concepts/hathora-entities#application). Filter the array by optionally passing in a `status` or `region`.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "status", + "schema": "array", + "required": false, + "description": "" + }, + { + "name": "region", + "schema": "array", + "required": false, + "description": "" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/processes/v2/{appId}/stop/{processId}", + "method": "stopProcessById", + "httpMethod": "post", + "tag": "ProcessesV2", + "typeScriptTag": "processesV2", + "description": "Stops a [process](https://hathora.dev/docs/concepts/hathora-entities#process) immediately.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "processId", + "schema": "string", + "required": true, + "description": "", + "example": "cbfcddd2-0006-43ae-996c-995fff7bed2e" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No content" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/processes/v2/{appId}/create/{region}", + "method": "createProcessWithoutRoom", + "httpMethod": "post", + "tag": "ProcessesV2", + "typeScriptTag": "processesV2", + "description": "Creates a [process](https://hathora.dev/docs/concepts/hathora-entities#process) without a room. Use this to pre-allocate processes ahead of time so that subsequent room assignment via [CreateRoom()](https://hathora.dev/api#tag/RoomV2/operation/CreateRoom) can be instant.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "region", + "schema": "string", + "required": true, + "description": "", + "example": "REGION" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/rooms/v1/{appId}/create", + "method": "createRoom", + "httpMethod": "post", + "tag": "RoomV1", + "typeScriptTag": "roomV1", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": false, + "description": "", + "example": "2swovpy1fnunu" + }, + { + "name": "roomConfig", + "schema": "string", + "required": false, + "description": "", + "example": "{\"name\":\"my-room\"}" + }, + { + "name": "region", + "schema": "string", + "required": true, + "description": "", + "example": "REGION" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "Unique identifier to a game session or match. Use the default system generated ID or overwrite it with your own.\nNote: error will be returned if `roomId` is not globally unique." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/rooms/v1/{appId}/info/{roomId}", + "method": "getRoomInfo", + "httpMethod": "get", + "tag": "RoomV1", + "typeScriptTag": "roomV1", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A room object represents a game session or match." + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/rooms/v1/{appId}/list/{processId}/active", + "method": "getActiveRooms", + "httpMethod": "get", + "tag": "RoomV1", + "typeScriptTag": "roomV1", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "processId", + "schema": "string", + "required": true, + "description": "", + "example": "cbfcddd2-0006-43ae-996c-995fff7bed2e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/rooms/v1/{appId}/list/{processId}/inactive", + "method": "getInactiveRooms", + "httpMethod": "get", + "tag": "RoomV1", + "typeScriptTag": "roomV1", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "processId", + "schema": "string", + "required": true, + "description": "", + "example": "cbfcddd2-0006-43ae-996c-995fff7bed2e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/rooms/v1/{appId}/destroy/{roomId}", + "method": "destroyRoom", + "httpMethod": "post", + "tag": "RoomV1", + "typeScriptTag": "roomV1", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No content" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/rooms/v1/{appId}/suspend/{roomId}", + "method": "suspendRoom", + "httpMethod": "post", + "tag": "RoomV1", + "typeScriptTag": "roomV1", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No content" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/rooms/v1/{appId}/connectioninfo/{roomId}", + "method": "getConnectionInfo", + "httpMethod": "get", + "tag": "RoomV1", + "typeScriptTag": "roomV1", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Connection information to the default port." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/rooms/v2/{appId}/create", + "method": "createRoom", + "httpMethod": "post", + "tag": "RoomV2", + "typeScriptTag": "roomV2", + "description": "Create a new [room](https://hathora.dev/docs/concepts/hathora-entities#room) for an existing [application](https://hathora.dev/docs/concepts/hathora-entities#application). Poll the [`GetConnectionInfo()`](https://hathora.dev/api#tag/RoomV2/operation/GetConnectionInfo) endpoint to get connection details for an active room.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": false, + "description": "", + "example": "2swovpy1fnunu" + }, + { + "name": "roomConfig", + "schema": "string", + "required": false, + "description": "", + "example": "{\"name\":\"my-room\"}" + }, + { + "name": "region", + "schema": "string", + "required": true, + "description": "", + "example": "REGION" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "403", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/rooms/v2/{appId}/info/{roomId}", + "method": "getAllocationData", + "httpMethod": "get", + "tag": "RoomV2", + "typeScriptTag": "roomV2", + "description": "Retreive current and historical allocation data for a [room](https://hathora.dev/docs/concepts/hathora-entities#room).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "A room object represents a game session or match." + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/rooms/v2/{appId}/list/{processId}/active", + "method": "listActiveRooms", + "httpMethod": "get", + "tag": "RoomV2", + "typeScriptTag": "roomV2", + "description": "Get all active [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a given [process](https://hathora.dev/docs/concepts/hathora-entities#process).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "processId", + "schema": "string", + "required": true, + "description": "", + "example": "cbfcddd2-0006-43ae-996c-995fff7bed2e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/rooms/v2/{appId}/list/{processId}/inactive", + "method": "listInactiveRooms", + "httpMethod": "get", + "tag": "RoomV2", + "typeScriptTag": "roomV2", + "description": "Get all inactive [rooms](https://hathora.dev/docs/concepts/hathora-entities#room) for a given [process](https://hathora.dev/docs/concepts/hathora-entities#process).", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "processId", + "schema": "string", + "required": true, + "description": "", + "example": "cbfcddd2-0006-43ae-996c-995fff7bed2e" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/rooms/v2/{appId}/destroy/{roomId}", + "method": "destroyRoomAllocation", + "httpMethod": "post", + "tag": "RoomV2", + "typeScriptTag": "roomV2", + "description": "Destroy a [room](https://hathora.dev/docs/concepts/hathora-entities#room). All associated metadata is deleted.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No content" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/rooms/v2/{appId}/suspend/{roomId}", + "method": "suspendRoomAllocation", + "httpMethod": "post", + "tag": "RoomV2", + "typeScriptTag": "roomV2", + "description": "Suspend a [room](https://hathora.dev/docs/concepts/hathora-entities#room). The room is unallocated from the process but can be rescheduled later using the same `roomId`.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No content" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/rooms/v2/{appId}/connectioninfo/{roomId}", + "method": "getConnectionInfo", + "httpMethod": "get", + "tag": "RoomV2", + "typeScriptTag": "roomV2", + "description": "Poll this endpoint to get connection details to a [room](https://hathora.dev/docs/concepts/hathora-entities#room). Clients can call this endpoint without authentication.", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "Connection information for the default and additional ports." + }, + { + "statusCode": "400", + "description": "" + }, + { + "statusCode": "402", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/rooms/v2/{appId}/update/{roomId}", + "method": "updateRoomAllocation", + "httpMethod": "post", + "tag": "RoomV2", + "typeScriptTag": "roomV2", + "description": "", + "parameters": [ + { + "name": "appId", + "schema": "string", + "required": true, + "description": "", + "example": "app-af469a92-5b45-4565-b3c4-b79878de67d2" + }, + { + "name": "roomId", + "schema": "string", + "required": true, + "description": "", + "example": "2swovpy1fnunu" + }, + { + "name": "roomConfig", + "schema": "string", + "required": true, + "description": "", + "example": "{\"name\":\"my-room\"}" + } + ], + "responses": [ + { + "statusCode": "204", + "description": "No content" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "500", + "description": "" + } + ] + }, + { + "url": "/tokens/v1/orgs/{orgId}", + "method": "listOrgTokens", + "httpMethod": "get", + "tag": "OrgTokensV1", + "typeScriptTag": "orgTokensV1", + "description": "List all organization tokens for a given org.", + "parameters": [ + { + "name": "orgId", + "schema": "string", + "required": true, + "description": "", + "example": "org-6f706e83-0ec1-437a-9a46-7d4281eb2f39" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + }, + { + "url": "/tokens/v1/orgs/{orgId}/create", + "method": "createNewOrgToken", + "httpMethod": "post", + "tag": "OrgTokensV1", + "typeScriptTag": "orgTokensV1", + "description": "Create a new organization token.", + "parameters": [ + { + "name": "orgId", + "schema": "string", + "required": true, + "description": "", + "example": "org-6f706e83-0ec1-437a-9a46-7d4281eb2f39" + }, + { + "name": "name", + "schema": "string", + "required": true, + "description": "", + "example": "ci-token" + } + ], + "responses": [ + { + "statusCode": "201", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + }, + { + "statusCode": "422", + "description": "" + } + ] + }, + { + "url": "/tokens/v1/orgs/{orgId}/tokens/{orgTokenId}/revoke", + "method": "revokeOrgToken", + "httpMethod": "post", + "tag": "OrgTokensV1", + "typeScriptTag": "orgTokensV1", + "description": "Revoke an organization token.", + "parameters": [ + { + "name": "orgId", + "schema": "string", + "required": true, + "description": "", + "example": "org-6f706e83-0ec1-437a-9a46-7d4281eb2f39" + }, + { + "name": "orgTokenId", + "schema": "string", + "required": true, + "description": "", + "example": "org-6f706e83-0ec1-437a-9a46-7d4281eb2f39" + } + ], + "responses": [ + { + "statusCode": "200", + "description": "" + }, + { + "statusCode": "401", + "description": "" + }, + { + "statusCode": "404", + "description": "" + } + ] + } + ], + "repositoryDescription": "A venture-backed start-up building a modern cloud optimized for multiplayer games. Hathora's {language} SDK generated by Konfig (https://konfigthis.com/).", + "logo": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/hathora/logo.png", + "openApiRaw": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/hathora/openapi.yaml", + "openApiGitHubUi": "https://github.com/konfig-sdks/openapi-examples/tree/HEAD/hathora/openapi.yaml", + "previewLinkImage": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/hathora/imagePreview.png", + "faviconUrl": "https://raw.githubusercontent.com/konfig-sdks/openapi-examples/HEAD/hathora/favicon.png", + "clientNameCamelCase": "hathora", + "lastUpdated": "2024-03-29T17:44:58.773Z", + "typescriptSdkUsageCode": "import { Hathora } from 'hathora-typescript-sdk';\n\nconst hathora = new Hathora({\n hathoraDevToken: \"HATHORA_DEV_TOKEN\",\n playerAuth: \"PLAYER_AUTH\"\n})", + "typescriptSdkFirstRequestCode": "// Returns an unsorted list of your organization’s [applications](https://hathora.dev/docs/concepts/hathora-entities#application). An application is uniquely identified by an `appId`.\nconst getAppListResponse = hathora.appV1.getAppList()", + "fixedSpecFileName": "hathora-fixed-spec.yaml" +} \ No newline at end of file diff --git a/sdks/db/spec-data/from-custom-request_hathora.dev.json b/sdks/db/spec-data/from-custom-request_hathora.dev.json new file mode 100644 index 0000000000..2e97163fdd --- /dev/null +++ b/sdks/db/spec-data/from-custom-request_hathora.dev.json @@ -0,0 +1,29 @@ +{ + "securitySchemes": { + "hathoraDevToken": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT" + }, + "playerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT" + } + }, + "apiBaseUrl": "https://api.hathora.dev", + "apiVersion": "0.0.1", + "apiDescription": "Welcome to the Hathora Cloud API documentation! Learn how to use the Hathora Cloud APIs to build and scale your game servers globally.", + "apiTitle": "Hathora Cloud API", + "endpoints": 67, + "sdkMethods": 67, + "schemas": 81, + "parameters": 157, + "originalCustomRequest": { + "type": "GET", + "url": "https://hathora.dev/swagger.json" + }, + "customRequestSpecFilename": "hathora.dev.yaml", + "difficultyScore": 146.75, + "difficulty": "Medium" +} \ No newline at end of file diff --git a/sdks/publish.yaml b/sdks/publish.yaml index 0e6aaa7fe6..8c727657c6 100644 --- a/sdks/publish.yaml +++ b/sdks/publish.yaml @@ -7206,3 +7206,19 @@ publish: serviceName: false sdkName: logistics-os-{language}-sdk clientName: LogisticsOs + from-custom-request_hathora.dev: + homepage: hathora.dev/ + company: Hathora + developerDocumentation: hathora.dev/api + apiStatusUrls: inherit + metaDescription: >- + A venture-backed start-up building a modern cloud optimized for + multiplayer games. + categories: + - gaming + - multiplayer_games + - infrastructure + - server_orchestration + serviceName: false + sdkName: hathora-{language}-sdk + clientName: Hathora diff --git a/sdks/src/collect-from-custom-requests.ts b/sdks/src/collect-from-custom-requests.ts index b792961143..0ecafa2de9 100644 --- a/sdks/src/collect-from-custom-requests.ts +++ b/sdks/src/collect-from-custom-requests.ts @@ -2265,6 +2265,10 @@ const customRequests: Record = { type: "GET", url: "https://los-ops-pub.s3.us-west-2.amazonaws.com/api_reference/swagger-v3.json", }, + "hathora.dev": { + type: "GET", + url: "https://hathora.dev/swagger.json", + }, }; async function downloadOpenApiSpecFromMintlify({