/* tslint:disable */ /* eslint-disable */ /** * Hathora Cloud API * Welcome to the Hathora Cloud API documentation! Learn how to use the Hathora Cloud APIs to build and scale your game servers globally. * * The version of the OpenAPI document: 0.0.1 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ import * as runtime from '../runtime'; import type { ApiError, Build, BuildWithUploadUrl, CreateBuildParams, } from '../models'; import { ApiErrorFromJSON, ApiErrorToJSON, BuildFromJSON, BuildToJSON, BuildWithUploadUrlFromJSON, BuildWithUploadUrlToJSON, CreateBuildParamsFromJSON, CreateBuildParamsToJSON, } from '../models'; export interface CreateBuildRequest { appId: string; createBuildParams: CreateBuildParams; } export interface CreateBuildWithUploadUrlRequest { appId: string; createBuildParams: CreateBuildParams; } export interface DeleteBuildRequest { appId: string; buildId: number; } export interface GetBuildInfoRequest { appId: string; buildId: number; } export interface GetBuildsRequest { appId: string; } export interface RunBuildRequest { appId: string; buildId: number; file: Blob; } /** * BuildV2Api - interface * * @export * @interface BuildV2ApiInterface */ export interface BuildV2ApiInterface { /** * 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. * @param {string} appId * @param {CreateBuildParams} createBuildParams * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof BuildV2ApiInterface */ createBuildRaw(requestParameters: CreateBuildRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * 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. */ createBuild(appId: string, createBuildParams: CreateBuildParams, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** * Creates a new [build](https://hathora.dev/docs/concepts/hathora-entities#build) with optional `uploadUrl` that can be used to upload the build to before calling `runBuild`. 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. * @param {string} appId * @param {CreateBuildParams} createBuildParams * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof BuildV2ApiInterface */ createBuildWithUploadUrlRaw(requestParameters: CreateBuildWithUploadUrlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * Creates a new [build](https://hathora.dev/docs/concepts/hathora-entities#build) with optional `uploadUrl` that can be used to upload the build to before calling `runBuild`. 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. */ createBuildWithUploadUrl(appId: string, createBuildParams: CreateBuildParams, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** * Delete a [build](https://hathora.dev/docs/concepts/hathora-entities#build). All associated metadata is deleted. * @param {string} appId * @param {number} buildId * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof BuildV2ApiInterface */ deleteBuildRaw(requestParameters: DeleteBuildRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * Delete a [build](https://hathora.dev/docs/concepts/hathora-entities#build). All associated metadata is deleted. */ deleteBuild(appId: string, buildId: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** * Get details for a [build](https://hathora.dev/docs/concepts/hathora-entities#build). * @param {string} appId * @param {number} buildId * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof BuildV2ApiInterface */ getBuildInfoRaw(requestParameters: GetBuildInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * Get details for a [build](https://hathora.dev/docs/concepts/hathora-entities#build). */ getBuildInfo(appId: string, buildId: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** * Returns an array of [builds](https://hathora.dev/docs/concepts/hathora-entities#build) for an [application](https://hathora.dev/docs/concepts/hathora-entities#application). * @param {string} appId * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof BuildV2ApiInterface */ getBuildsRaw(requestParameters: GetBuildsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>>; /** * Returns an array of [builds](https://hathora.dev/docs/concepts/hathora-entities#build) for an [application](https://hathora.dev/docs/concepts/hathora-entities#application). */ getBuilds(appId: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * 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). * @param {string} appId * @param {number} buildId * @param {Blob} file * @param {*} [options] Override http request option. * @throws {RequiredError} * @memberof BuildV2ApiInterface */ runBuildRaw(requestParameters: RunBuildRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** * 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). */ runBuild(appId: string, buildId: number, file: Blob, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; } /** * */ export class BuildV2Api extends runtime.BaseAPI implements BuildV2ApiInterface { /** * 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. */ async createBuildRaw(requestParameters: CreateBuildRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters.appId === null || requestParameters.appId === undefined) { throw new runtime.RequiredError('appId','Required parameter requestParameters.appId was null or undefined when calling createBuild.'); } if (requestParameters.createBuildParams === null || requestParameters.createBuildParams === undefined) { throw new runtime.RequiredError('createBuildParams','Required parameter requestParameters.createBuildParams was null or undefined when calling createBuild.'); } const queryParameters: any = {}; const headerParameters: runtime.HTTPHeaders = {}; headerParameters['Content-Type'] = 'application/json'; if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("hathoraDevToken", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } const response = await this.request({ path: `/builds/v2/{appId}/create`.replace(`{${"appId"}}`, encodeURIComponent(String(requestParameters.appId))), method: 'POST', headers: headerParameters, query: queryParameters, body: CreateBuildParamsToJSON(requestParameters.createBuildParams), }, initOverrides); return new runtime.JSONApiResponse(response, (jsonValue) => BuildFromJSON(jsonValue)); } /** * 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. */ async createBuild(appId: string, createBuildParams: CreateBuildParams, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { const response = await this.createBuildRaw({ appId: appId, createBuildParams: createBuildParams }, initOverrides); return await response.value(); } /** * Creates a new [build](https://hathora.dev/docs/concepts/hathora-entities#build) with optional `uploadUrl` that can be used to upload the build to before calling `runBuild`. 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. */ async createBuildWithUploadUrlRaw(requestParameters: CreateBuildWithUploadUrlRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters.appId === null || requestParameters.appId === undefined) { throw new runtime.RequiredError('appId','Required parameter requestParameters.appId was null or undefined when calling createBuildWithUploadUrl.'); } if (requestParameters.createBuildParams === null || requestParameters.createBuildParams === undefined) { throw new runtime.RequiredError('createBuildParams','Required parameter requestParameters.createBuildParams was null or undefined when calling createBuildWithUploadUrl.'); } const queryParameters: any = {}; const headerParameters: runtime.HTTPHeaders = {}; headerParameters['Content-Type'] = 'application/json'; if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("hathoraDevToken", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } const response = await this.request({ path: `/builds/v2/{appId}/createWithUploadUrl`.replace(`{${"appId"}}`, encodeURIComponent(String(requestParameters.appId))), method: 'POST', headers: headerParameters, query: queryParameters, body: CreateBuildParamsToJSON(requestParameters.createBuildParams), }, initOverrides); return new runtime.JSONApiResponse(response, (jsonValue) => BuildWithUploadUrlFromJSON(jsonValue)); } /** * Creates a new [build](https://hathora.dev/docs/concepts/hathora-entities#build) with optional `uploadUrl` that can be used to upload the build to before calling `runBuild`. 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. */ async createBuildWithUploadUrl(appId: string, createBuildParams: CreateBuildParams, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { const response = await this.createBuildWithUploadUrlRaw({ appId: appId, createBuildParams: createBuildParams }, initOverrides); return await response.value(); } /** * Delete a [build](https://hathora.dev/docs/concepts/hathora-entities#build). All associated metadata is deleted. */ async deleteBuildRaw(requestParameters: DeleteBuildRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters.appId === null || requestParameters.appId === undefined) { throw new runtime.RequiredError('appId','Required parameter requestParameters.appId was null or undefined when calling deleteBuild.'); } if (requestParameters.buildId === null || requestParameters.buildId === undefined) { throw new runtime.RequiredError('buildId','Required parameter requestParameters.buildId was null or undefined when calling deleteBuild.'); } const queryParameters: any = {}; const headerParameters: runtime.HTTPHeaders = {}; if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("hathoraDevToken", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } const response = await this.request({ path: `/builds/v2/{appId}/delete/{buildId}`.replace(`{${"appId"}}`, encodeURIComponent(String(requestParameters.appId))).replace(`{${"buildId"}}`, encodeURIComponent(String(requestParameters.buildId))), method: 'DELETE', headers: headerParameters, query: queryParameters, }, initOverrides); return new runtime.VoidApiResponse(response); } /** * Delete a [build](https://hathora.dev/docs/concepts/hathora-entities#build). All associated metadata is deleted. */ async deleteBuild(appId: string, buildId: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { await this.deleteBuildRaw({ appId: appId, buildId: buildId }, initOverrides); } /** * Get details for a [build](https://hathora.dev/docs/concepts/hathora-entities#build). */ async getBuildInfoRaw(requestParameters: GetBuildInfoRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters.appId === null || requestParameters.appId === undefined) { throw new runtime.RequiredError('appId','Required parameter requestParameters.appId was null or undefined when calling getBuildInfo.'); } if (requestParameters.buildId === null || requestParameters.buildId === undefined) { throw new runtime.RequiredError('buildId','Required parameter requestParameters.buildId was null or undefined when calling getBuildInfo.'); } const queryParameters: any = {}; const headerParameters: runtime.HTTPHeaders = {}; if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("hathoraDevToken", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } const response = await this.request({ path: `/builds/v2/{appId}/info/{buildId}`.replace(`{${"appId"}}`, encodeURIComponent(String(requestParameters.appId))).replace(`{${"buildId"}}`, encodeURIComponent(String(requestParameters.buildId))), method: 'GET', headers: headerParameters, query: queryParameters, }, initOverrides); return new runtime.JSONApiResponse(response, (jsonValue) => BuildFromJSON(jsonValue)); } /** * Get details for a [build](https://hathora.dev/docs/concepts/hathora-entities#build). */ async getBuildInfo(appId: string, buildId: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { const response = await this.getBuildInfoRaw({ appId: appId, buildId: buildId }, initOverrides); return await response.value(); } /** * Returns an array of [builds](https://hathora.dev/docs/concepts/hathora-entities#build) for an [application](https://hathora.dev/docs/concepts/hathora-entities#application). */ async getBuildsRaw(requestParameters: GetBuildsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { if (requestParameters.appId === null || requestParameters.appId === undefined) { throw new runtime.RequiredError('appId','Required parameter requestParameters.appId was null or undefined when calling getBuilds.'); } const queryParameters: any = {}; const headerParameters: runtime.HTTPHeaders = {}; if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("hathoraDevToken", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } const response = await this.request({ path: `/builds/v2/{appId}/list`.replace(`{${"appId"}}`, encodeURIComponent(String(requestParameters.appId))), method: 'GET', headers: headerParameters, query: queryParameters, }, initOverrides); return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(BuildFromJSON)); } /** * Returns an array of [builds](https://hathora.dev/docs/concepts/hathora-entities#build) for an [application](https://hathora.dev/docs/concepts/hathora-entities#application). */ async getBuilds(appId: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { const response = await this.getBuildsRaw({ appId: appId }, initOverrides); return await response.value(); } /** * 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). */ async runBuildRaw(requestParameters: RunBuildRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters.appId === null || requestParameters.appId === undefined) { throw new runtime.RequiredError('appId','Required parameter requestParameters.appId was null or undefined when calling runBuild.'); } if (requestParameters.buildId === null || requestParameters.buildId === undefined) { throw new runtime.RequiredError('buildId','Required parameter requestParameters.buildId was null or undefined when calling runBuild.'); } if (requestParameters.file === null || requestParameters.file === undefined) { throw new runtime.RequiredError('file','Required parameter requestParameters.file was null or undefined when calling runBuild.'); } const queryParameters: any = {}; const headerParameters: runtime.HTTPHeaders = {}; if (this.configuration && this.configuration.accessToken) { const token = this.configuration.accessToken; const tokenString = await token("hathoraDevToken", []); if (tokenString) { headerParameters["Authorization"] = `Bearer ${tokenString}`; } } const consumes: runtime.Consume[] = [ { contentType: 'multipart/form-data' }, ]; // @ts-ignore: canConsumeForm may be unused const canConsumeForm = runtime.canConsumeForm(consumes); let formParams: { append(param: string, value: any): any }; let useForm = false; // use FormData to transmit files using content-type "multipart/form-data" useForm = canConsumeForm; if (useForm) { formParams = new FormData(); } else { formParams = new URLSearchParams(); } if (requestParameters.file !== undefined) { formParams.append('file', requestParameters.file as any); } const response = await this.request({ path: `/builds/v2/{appId}/run/{buildId}`.replace(`{${"appId"}}`, encodeURIComponent(String(requestParameters.appId))).replace(`{${"buildId"}}`, encodeURIComponent(String(requestParameters.buildId))), method: 'POST', headers: headerParameters, query: queryParameters, body: formParams, }, initOverrides); return new runtime.BlobApiResponse(response); } /** * 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). */ async runBuild(appId: string, buildId: number, file: Blob, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { const response = await this.runBuildRaw({ appId: appId, buildId: buildId, file: file }, initOverrides); return await response.value(); } }