/* tslint:disable */
/* eslint-disable */
/**
 * Tribufu API
 * API to access Tribufu services.
 *
 * The version of the OpenAPI document: 1.3.0
 * Contact: contact@tribufu.com
 *
 * 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 {
  Account,
  AuthorizeRequest,
  Client,
  ClientInfo,
  CodeResponse,
  CreateUser,
  CryptoViewModel,
  Game,
  GameServer,
  GameServerCluster,
  GameServerQuery,
  Group,
  GroupApplication,
  GroupMember,
  HashViewModel,
  IntrospectRequest,
  IntrospectResponse,
  IpAddress,
  LeaderboardItem,
  LeaderboardOrder,
  Package,
  Product,
  Profile,
  ProfileGame,
  ProfileGroup,
  RevokeRequest,
  Search,
  ServerMetrics,
  TokenRequest,
  TokenResponse,
  UpdateProfile,
  UserInfo,
} from '../models/index';
import {
    AccountFromJSON,
    AccountToJSON,
    AuthorizeRequestFromJSON,
    AuthorizeRequestToJSON,
    ClientFromJSON,
    ClientToJSON,
    ClientInfoFromJSON,
    ClientInfoToJSON,
    CodeResponseFromJSON,
    CodeResponseToJSON,
    CreateUserFromJSON,
    CreateUserToJSON,
    CryptoViewModelFromJSON,
    CryptoViewModelToJSON,
    GameFromJSON,
    GameToJSON,
    GameServerFromJSON,
    GameServerToJSON,
    GameServerClusterFromJSON,
    GameServerClusterToJSON,
    GameServerQueryFromJSON,
    GameServerQueryToJSON,
    GroupFromJSON,
    GroupToJSON,
    GroupApplicationFromJSON,
    GroupApplicationToJSON,
    GroupMemberFromJSON,
    GroupMemberToJSON,
    HashViewModelFromJSON,
    HashViewModelToJSON,
    IntrospectRequestFromJSON,
    IntrospectRequestToJSON,
    IntrospectResponseFromJSON,
    IntrospectResponseToJSON,
    IpAddressFromJSON,
    IpAddressToJSON,
    LeaderboardItemFromJSON,
    LeaderboardItemToJSON,
    LeaderboardOrderFromJSON,
    LeaderboardOrderToJSON,
    PackageFromJSON,
    PackageToJSON,
    ProductFromJSON,
    ProductToJSON,
    ProfileFromJSON,
    ProfileToJSON,
    ProfileGameFromJSON,
    ProfileGameToJSON,
    ProfileGroupFromJSON,
    ProfileGroupToJSON,
    RevokeRequestFromJSON,
    RevokeRequestToJSON,
    SearchFromJSON,
    SearchToJSON,
    ServerMetricsFromJSON,
    ServerMetricsToJSON,
    TokenRequestFromJSON,
    TokenRequestToJSON,
    TokenResponseFromJSON,
    TokenResponseToJSON,
    UpdateProfileFromJSON,
    UpdateProfileToJSON,
    UserInfoFromJSON,
    UserInfoToJSON,
} from '../models/index';

export interface AuthorizeOperationRequest {
    authorizeRequest?: AuthorizeRequest;
}

export interface ChangeEmailRequest {
    id: string;
    body?: any | null;
}

export interface ChangePasswordRequest {
    id: string;
    body?: any | null;
}

export interface ClaimGameServerRequest {
    id: string;
    body?: any | null;
}

export interface ClaimGameServerV1Request {
    id: string;
    body?: any | null;
}

export interface ConvertBase64Request {
    cryptoViewModel?: CryptoViewModel;
}

export interface CreateClientRequest {
    body?: any | null;
}

export interface CreateGameServerRequest {
    body?: any | null;
}

export interface CreateGameServerClusterRequest {
    body?: any | null;
}

export interface CreateGameServerClusterV1Request {
    body?: any | null;
}

export interface CreateGameServerV1Request {
    body?: any | null;
}

export interface CreateGroupRequest {
    body?: any | null;
}

export interface CreateTokenRequest {
    tokenRequest?: TokenRequest;
}

export interface CreateUserRequest {
    createUser?: CreateUser;
}

export interface DeleteClientRequest {
    id: string;
}

export interface DeleteGameServerRequest {
    id: string;
}

export interface DeleteGameServerClusterRequest {
    id: string;
}

export interface DeleteGameServerClusterV1Request {
    id: string;
}

export interface DeleteGameServerV1Request {
    id: string;
}

export interface DeleteGroupRequest {
    id: string;
}

export interface DeletePackageRequest {
    id: string;
}

export interface GenerateFlakeIdRequest {
    amount?: number;
}

export interface GenerateFlakeIdFromTimestampRequest {
    timestamp: string;
    amount?: number;
}

export interface GeneratePasswordRequest {
    length?: number;
    symbols?: boolean;
}

export interface GenerateUuidRequest {
    version?: number;
    amount?: number;
}

export interface GetClientByIdRequest {
    id: string;
}

export interface GetClientsRequest {
    organizationId?: string;
    page?: number;
    limit?: number;
}

export interface GetGameByIdRequest {
    id: string;
}

export interface GetGameServerByAddressAndQueryPortRequest {
    address: string;
    port: number;
}

export interface GetGameServerByAddressAndQueryPortV1Request {
    address: string;
    port: number;
}

export interface GetGameServerByIdRequest {
    id: string;
}

export interface GetGameServerByIdV1Request {
    id: string;
}

export interface GetGameServerClusterByIdRequest {
    id: string;
}

export interface GetGameServerClusterByIdV1Request {
    id: string;
}

export interface GetGameServerClusterServersRequest {
    id: string;
    page?: number;
    limit?: number;
}

export interface GetGameServerClusterServersV1Request {
    id: string;
    page?: number;
    limit?: number;
}

export interface GetGameServerClustersRequest {
    page?: number;
    limit?: number;
}

export interface GetGameServerClustersV1Request {
    page?: number;
    limit?: number;
}

export interface GetGameServerQueriesRequest {
    id: string;
    page?: number;
    limit?: number;
}

export interface GetGameServerQueriesV1Request {
    id: string;
    page?: number;
    limit?: number;
}

export interface GetGameServersRequest {
    address?: string;
    queryPort?: number;
    country?: string;
    gameId?: string;
    page?: number;
    limit?: number;
}

export interface GetGameServersByCountryRequest {
    country: string;
    page?: number;
    limit?: number;
}

export interface GetGameServersByCountryV1Request {
    country: string;
    page?: number;
    limit?: number;
}

export interface GetGameServersV1Request {
    address?: string;
    queryPort?: number;
    country?: string;
    gameId?: string;
    page?: number;
    limit?: number;
}

export interface GetGamesRequest {
    page?: number;
    limit?: number;
}

export interface GetGroupByIdRequest {
    id: string;
}

export interface GetGroupByTagRequest {
    tag: string;
}

export interface GetGroupByUuidRequest {
    uuid: string;
}

export interface GetGroupGamesRequest {
    id: string;
}

export interface GetGroupMembersRequest {
    id: string;
}

export interface GetGroupsRequest {
    page?: number;
    limit?: number;
}

export interface GetIpAddressRequest {
    address: string;
}

export interface GetIpAddressesRequest {
    organizationId?: string;
    page?: number;
    limit?: number;
}

export interface GetLeaderboardRequest {
    order?: LeaderboardOrder;
}

export interface GetPackageByIdRequest {
    id: string;
}

export interface GetPackagesRequest {
    page?: number;
    limit?: number;
}

export interface GetProductByIdRequest {
    id: string;
}

export interface GetProductsRequest {
    page?: number;
    limit?: number;
}

export interface GetUserAccountsRequest {
    id: string;
}

export interface GetUserFriendsRequest {
    id: string;
}

export interface GetUserFriendsV1Request {
    id: string;
}

export interface GetUserGamesRequest {
    id: string;
}

export interface GetUserGamesV1Request {
    id: string;
}

export interface GetUserGroupsRequest {
    id: string;
}

export interface GetUserGroupsV1Request {
    id: string;
}

export interface GetUserProfileByIdRequest {
    id: string;
}

export interface GetUserProfileByIdV1Request {
    id: string;
}

export interface GetUserProfileByNameRequest {
    name: string;
}

export interface GetUserProfileByNameV1Request {
    name: string;
}

export interface GetUserProfileByUuidRequest {
    uuid: string;
}

export interface GetUserProfileByUuidV1Request {
    uuid: string;
}

export interface GetUserProfilesRequest {
    page?: number;
    limit?: number;
}

export interface GetUserProfilesV1Request {
    page?: number;
    limit?: number;
}

export interface GetUserSanctionsRequest {
    id: string;
}

export interface GetUserSanctionsV1Request {
    id: string;
}

export interface GetUserServersRequest {
    id: string;
    page?: number;
    limit?: number;
}

export interface GetUserServersV1Request {
    id: string;
    page?: number;
    limit?: number;
}

export interface HashArgon2Request {
    hashViewModel?: HashViewModel;
}

export interface HashBcryptRequest {
    hashViewModel?: HashViewModel;
}

export interface HashMd5Request {
    hashViewModel?: HashViewModel;
}

export interface HashSha256Request {
    hashViewModel?: HashViewModel;
}

export interface IntrospectTokenRequest {
    introspectRequest?: IntrospectRequest;
}

export interface RevokeTokenRequest {
    revokeRequest?: RevokeRequest;
}

export interface SearchRequest {
    search?: Search;
}

export interface UpdateClientRequest {
    id: string;
    body?: any | null;
}

export interface UpdateGameServerRequest {
    id: string;
    body?: any | null;
}

export interface UpdateGameServerClusterRequest {
    id: string;
    body?: any | null;
}

export interface UpdateGameServerClusterV1Request {
    id: string;
    body?: any | null;
}

export interface UpdateGameServerV1Request {
    id: string;
    body?: any | null;
}

export interface UpdateGroupRequest {
    id: string;
    body?: any | null;
}

export interface UpdatePackageRequest {
    id: string;
    _package?: Package;
}

export interface UpdateUserProfileRequest {
    id: string;
    updateProfile?: UpdateProfile;
}

export interface UpdateUserProfileV1Request {
    id: string;
    updateProfile?: UpdateProfile;
}

/**
 * 
 */
export class TribufuGeneratedApi extends runtime.BaseAPI {

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.authorize</code>
     * Authorize the client to access the user information.
     */
    async authorizeRaw(requestParameters: AuthorizeOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CodeResponse>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/authorize`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: AuthorizeRequestToJSON(requestParameters['authorizeRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => CodeResponseFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.authorize</code>
     * Authorize the client to access the user information.
     */
    async authorize(authorizeRequest?: AuthorizeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CodeResponse> {
        const response = await this.authorizeRaw({ authorizeRequest: authorizeRequest }, initOverrides);
        return await response.value();
    }

    /**
     * This endpoint is not available with an api key, only with a bearer token.<br/><br/><b>🔒 Required permissions:</b> <code>tribufu.identity.user.email.update</code>
     * Change the email of a user.
     */
    async changeEmailRaw(requestParameters: ChangeEmailRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling changeEmail().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json-patch+json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/{id}/email`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * This endpoint is not available with an api key, only with a bearer token.<br/><br/><b>🔒 Required permissions:</b> <code>tribufu.identity.user.email.update</code>
     * Change the email of a user.
     */
    async changeEmail(id: string, body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.changeEmailRaw({ id: id, body: body }, initOverrides);
    }

    /**
     * This endpoint is not available with an api key, only with a bearer token.<br/><br/><b>🔒 Required permissions:</b> <code>tribufu.identity.user.password.update</code>
     * Change the password of a user.
     */
    async changePasswordRaw(requestParameters: ChangePasswordRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling changePassword().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json-patch+json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/{id}/password`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * This endpoint is not available with an api key, only with a bearer token.<br/><br/><b>🔒 Required permissions:</b> <code>tribufu.identity.user.password.update</code>
     * Change the password of a user.
     */
    async changePassword(id: string, body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.changePasswordRaw({ id: id, body: body }, initOverrides);
    }

    /**
     * This endpoint is not available with an api key, only with a bearer token.<br/><br/><b>🔒 Required permissions:</b> <code>tribufu.game.server.claim</code>
     * Claim a game server.
     */
    async claimGameServerRaw(requestParameters: ClaimGameServerRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling claimGameServer().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/{id}/claim`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * This endpoint is not available with an api key, only with a bearer token.<br/><br/><b>🔒 Required permissions:</b> <code>tribufu.game.server.claim</code>
     * Claim a game server.
     */
    async claimGameServer(id: string, body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.claimGameServerRaw({ id: id, body: body }, initOverrides);
    }

    /**
     * This endpoint is not available with an api key, only with a bearer token.<br/><br/><b>🔒 Required permissions:</b> <code>tribufu.game.server.claim</code>
     * Claim a game server.
     * @deprecated
     */
    async claimGameServerV1Raw(requestParameters: ClaimGameServerV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling claimGameServerV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/servers/{id}/claim`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * This endpoint is not available with an api key, only with a bearer token.<br/><br/><b>🔒 Required permissions:</b> <code>tribufu.game.server.claim</code>
     * Claim a game server.
     * @deprecated
     */
    async claimGameServerV1(id: string, body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.claimGameServerV1Raw({ id: id, body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.convert.base64</code>
     * Convert a string to base64 or vice versa.
     */
    async convertBase64Raw(requestParameters: ConvertBase64Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CryptoViewModel>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/utils/base64`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: CryptoViewModelToJSON(requestParameters['cryptoViewModel']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => CryptoViewModelFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.convert.base64</code>
     * Convert a string to base64 or vice versa.
     */
    async convertBase64(cryptoViewModel?: CryptoViewModel, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CryptoViewModel> {
        const response = await this.convertBase64Raw({ cryptoViewModel: cryptoViewModel }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.client.create</code>
     * Create an oauth2 client.
     */
    async createClientRaw(requestParameters: CreateClientRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/clients`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.client.create</code>
     * Create an oauth2 client.
     */
    async createClient(body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.createClientRaw({ body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.create</code>
     * Create a new game server.
     */
    async createGameServerRaw(requestParameters: CreateGameServerRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.create</code>
     * Create a new game server.
     */
    async createGameServer(body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.createGameServerRaw({ body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.create</code>
     * Create a new game server cluster.
     */
    async createGameServerClusterRaw(requestParameters: CreateGameServerClusterRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/clusters`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.create</code>
     * Create a new game server cluster.
     */
    async createGameServerCluster(body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.createGameServerClusterRaw({ body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.create</code>
     * Create a new game server cluster.
     * @deprecated
     */
    async createGameServerClusterV1Raw(requestParameters: CreateGameServerClusterV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/clusters`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.create</code>
     * Create a new game server cluster.
     * @deprecated
     */
    async createGameServerClusterV1(body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.createGameServerClusterV1Raw({ body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.create</code>
     * Create a new game server.
     * @deprecated
     */
    async createGameServerV1Raw(requestParameters: CreateGameServerV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/servers`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.create</code>
     * Create a new game server.
     * @deprecated
     */
    async createGameServerV1(body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.createGameServerV1Raw({ body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.create</code>
     * Create a new group.
     */
    async createGroupRaw(requestParameters: CreateGroupRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/groups`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.create</code>
     * Create a new group.
     */
    async createGroup(body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.createGroupRaw({ body: body }, initOverrides);
    }

    /**
     * Create a new token with grant type.
     */
    async createTokenRaw(requestParameters: CreateTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<TokenResponse>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/token`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: TokenRequestToJSON(requestParameters['tokenRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => TokenResponseFromJSON(jsonValue));
    }

    /**
     * Create a new token with grant type.
     */
    async createToken(tokenRequest?: TokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<TokenResponse> {
        const response = await this.createTokenRaw({ tokenRequest: tokenRequest }, initOverrides);
        return await response.value();
    }

    /**
     * This endpoint is only available with client credentials.
     * Create an user.
     */
    async createUserRaw(requestParameters: CreateUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: CreateUserToJSON(requestParameters['createUser']),
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * This endpoint is only available with client credentials.
     * Create an user.
     */
    async createUser(createUser?: CreateUser, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.createUserRaw({ createUser: createUser }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.client.delete</code>
     * Delete an oauth2 client.
     */
    async deleteClientRaw(requestParameters: DeleteClientRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling deleteClient().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/clients/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.client.delete</code>
     * Delete an oauth2 client.
     */
    async deleteClient(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deleteClientRaw({ id: id }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.delete</code>
     * Delete a game server.
     */
    async deleteGameServerRaw(requestParameters: DeleteGameServerRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling deleteGameServer().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.delete</code>
     * Delete a game server.
     */
    async deleteGameServer(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deleteGameServerRaw({ id: id }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.delete</code>
     * Delete a game server cluster.
     */
    async deleteGameServerClusterRaw(requestParameters: DeleteGameServerClusterRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling deleteGameServerCluster().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/clusters/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.delete</code>
     * Delete a game server cluster.
     */
    async deleteGameServerCluster(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deleteGameServerClusterRaw({ id: id }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.delete</code>
     * Delete a game server cluster.
     * @deprecated
     */
    async deleteGameServerClusterV1Raw(requestParameters: DeleteGameServerClusterV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling deleteGameServerClusterV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/clusters/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.delete</code>
     * Delete a game server cluster.
     * @deprecated
     */
    async deleteGameServerClusterV1(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deleteGameServerClusterV1Raw({ id: id }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.delete</code>
     * Delete a game server.
     * @deprecated
     */
    async deleteGameServerV1Raw(requestParameters: DeleteGameServerV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling deleteGameServerV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/servers/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.delete</code>
     * Delete a game server.
     * @deprecated
     */
    async deleteGameServerV1(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deleteGameServerV1Raw({ id: id }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.delete</code>
     * Delete a group.
     */
    async deleteGroupRaw(requestParameters: DeleteGroupRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling deleteGroup().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/groups/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.delete</code>
     * Delete a group.
     */
    async deleteGroup(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deleteGroupRaw({ id: id }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.package.delete</code>
     * Delete an package.
     */
    async deletePackageRaw(requestParameters: DeletePackageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling deletePackage().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/packages/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.package.delete</code>
     * Delete an package.
     */
    async deletePackage(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deletePackageRaw({ id: id }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.generate.flake</code>
     * Generate one or more flake ids.
     */
    async generateFlakeIdRaw(requestParameters: GenerateFlakeIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<string>>> {
        const queryParameters: any = {};

        if (requestParameters['amount'] != null) {
            queryParameters['amount'] = requestParameters['amount'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/utils/flake`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.generate.flake</code>
     * Generate one or more flake ids.
     */
    async generateFlakeId(amount?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<string>> {
        const response = await this.generateFlakeIdRaw({ amount: amount }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.generate.flake.timestamp</code>
     * Generate one or more flake ids from a timestamp.
     */
    async generateFlakeIdFromTimestampRaw(requestParameters: GenerateFlakeIdFromTimestampRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<string>>> {
        if (requestParameters['timestamp'] == null) {
            throw new runtime.RequiredError(
                'timestamp',
                'Required parameter "timestamp" was null or undefined when calling generateFlakeIdFromTimestamp().'
            );
        }

        const queryParameters: any = {};

        if (requestParameters['amount'] != null) {
            queryParameters['amount'] = requestParameters['amount'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/utils/flake/{timestamp}`.replace(`{${"timestamp"}}`, encodeURIComponent(String(requestParameters['timestamp']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.generate.flake.timestamp</code>
     * Generate one or more flake ids from a timestamp.
     */
    async generateFlakeIdFromTimestamp(timestamp: string, amount?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<string>> {
        const response = await this.generateFlakeIdFromTimestampRaw({ timestamp: timestamp, amount: amount }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.generate.password</code>
     * Generate a random password.
     */
    async generatePasswordRaw(requestParameters: GeneratePasswordRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<HashViewModel>> {
        const queryParameters: any = {};

        if (requestParameters['length'] != null) {
            queryParameters['length'] = requestParameters['length'];
        }

        if (requestParameters['symbols'] != null) {
            queryParameters['symbols'] = requestParameters['symbols'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/utils/password`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => HashViewModelFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.generate.password</code>
     * Generate a random password.
     */
    async generatePassword(length?: number, symbols?: boolean, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<HashViewModel> {
        const response = await this.generatePasswordRaw({ length: length, symbols: symbols }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.generate.uuid</code>
     * Generate one or more uuids with a specific version.
     */
    async generateUuidRaw(requestParameters: GenerateUuidRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<string>>> {
        const queryParameters: any = {};

        if (requestParameters['version'] != null) {
            queryParameters['version'] = requestParameters['version'];
        }

        if (requestParameters['amount'] != null) {
            queryParameters['amount'] = requestParameters['amount'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/utils/uuid`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.generate.uuid</code>
     * Generate one or more uuids with a specific version.
     */
    async generateUuid(version?: number, amount?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<string>> {
        const response = await this.generateUuidRaw({ version: version, amount: amount }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.client.get</code>
     * Get a oauth2 client by id.
     */
    async getClientByIdRaw(requestParameters: GetClientByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Client>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getClientById().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/clients/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ClientFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.client.get</code>
     * Get a oauth2 client by id.
     */
    async getClientById(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Client> {
        const response = await this.getClientByIdRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * Get current client information.
     */
    async getClientInfoRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ClientInfo>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/clientinfo`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ClientInfoFromJSON(jsonValue));
    }

    /**
     * Get current client information.
     */
    async getClientInfo(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ClientInfo> {
        const response = await this.getClientInfoRaw(initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.client.list</code>
     * Get a list of oauth2 clients.
     */
    async getClientsRaw(requestParameters: GetClientsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Client>>> {
        const queryParameters: any = {};

        if (requestParameters['organizationId'] != null) {
            queryParameters['organization_id'] = requestParameters['organizationId'];
        }

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/clients`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ClientFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.client.list</code>
     * Get a list of oauth2 clients.
     */
    async getClients(organizationId?: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Client>> {
        const response = await this.getClientsRaw({ organizationId: organizationId, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * Get current ip address location.
     */
    async getCurrentIpAddressRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<IpAddress>>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/geoip`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(IpAddressFromJSON));
    }

    /**
     * Get current ip address location.
     */
    async getCurrentIpAddress(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<IpAddress>> {
        const response = await this.getCurrentIpAddressRaw(initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.get</code>
     * Get a game by id.
     */
    async getGameByIdRaw(requestParameters: GetGameByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Game>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGameById().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => GameFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.get</code>
     * Get a game by id.
     */
    async getGameById(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Game> {
        const response = await this.getGameByIdRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.get.address</code>
     * Get a game server by address and query port.
     */
    async getGameServerByAddressAndQueryPortRaw(requestParameters: GetGameServerByAddressAndQueryPortRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GameServer>> {
        if (requestParameters['address'] == null) {
            throw new runtime.RequiredError(
                'address',
                'Required parameter "address" was null or undefined when calling getGameServerByAddressAndQueryPort().'
            );
        }

        if (requestParameters['port'] == null) {
            throw new runtime.RequiredError(
                'port',
                'Required parameter "port" was null or undefined when calling getGameServerByAddressAndQueryPort().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/address/{address}:{port}`.replace(`{${"address"}}`, encodeURIComponent(String(requestParameters['address']))).replace(`{${"port"}}`, encodeURIComponent(String(requestParameters['port']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => GameServerFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.get.address</code>
     * Get a game server by address and query port.
     */
    async getGameServerByAddressAndQueryPort(address: string, port: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GameServer> {
        const response = await this.getGameServerByAddressAndQueryPortRaw({ address: address, port: port }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.get.address</code>
     * Get a game server by address and query port.
     * @deprecated
     */
    async getGameServerByAddressAndQueryPortV1Raw(requestParameters: GetGameServerByAddressAndQueryPortV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GameServer>> {
        if (requestParameters['address'] == null) {
            throw new runtime.RequiredError(
                'address',
                'Required parameter "address" was null or undefined when calling getGameServerByAddressAndQueryPortV1().'
            );
        }

        if (requestParameters['port'] == null) {
            throw new runtime.RequiredError(
                'port',
                'Required parameter "port" was null or undefined when calling getGameServerByAddressAndQueryPortV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/servers/address/{address}:{port}`.replace(`{${"address"}}`, encodeURIComponent(String(requestParameters['address']))).replace(`{${"port"}}`, encodeURIComponent(String(requestParameters['port']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => GameServerFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.get.address</code>
     * Get a game server by address and query port.
     * @deprecated
     */
    async getGameServerByAddressAndQueryPortV1(address: string, port: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GameServer> {
        const response = await this.getGameServerByAddressAndQueryPortV1Raw({ address: address, port: port }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.get</code>
     * Get a game server by id.
     */
    async getGameServerByIdRaw(requestParameters: GetGameServerByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GameServer>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGameServerById().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => GameServerFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.get</code>
     * Get a game server by id.
     */
    async getGameServerById(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GameServer> {
        const response = await this.getGameServerByIdRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.get</code>
     * Get a game server by id.
     * @deprecated
     */
    async getGameServerByIdV1Raw(requestParameters: GetGameServerByIdV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GameServer>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGameServerByIdV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/servers/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => GameServerFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.get</code>
     * Get a game server by id.
     * @deprecated
     */
    async getGameServerByIdV1(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GameServer> {
        const response = await this.getGameServerByIdV1Raw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.get</code>
     * Get a game server cluster by id.
     */
    async getGameServerClusterByIdRaw(requestParameters: GetGameServerClusterByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GameServerCluster>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGameServerClusterById().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/clusters/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => GameServerClusterFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.get</code>
     * Get a game server cluster by id.
     */
    async getGameServerClusterById(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GameServerCluster> {
        const response = await this.getGameServerClusterByIdRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.get</code>
     * Get a game server cluster by id.
     * @deprecated
     */
    async getGameServerClusterByIdV1Raw(requestParameters: GetGameServerClusterByIdV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GameServerCluster>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGameServerClusterByIdV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/clusters/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => GameServerClusterFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.get</code>
     * Get a game server cluster by id.
     * @deprecated
     */
    async getGameServerClusterByIdV1(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GameServerCluster> {
        const response = await this.getGameServerClusterByIdV1Raw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.server.list</code>
     * Get a list of game server cluster servers.
     */
    async getGameServerClusterServersRaw(requestParameters: GetGameServerClusterServersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<any>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGameServerClusterServers().'
            );
        }

        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/clusters/{id}/servers`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.server.list</code>
     * Get a list of game server cluster servers.
     */
    async getGameServerClusterServers(id: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<any>> {
        const response = await this.getGameServerClusterServersRaw({ id: id, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.server.list</code>
     * Get a list of game server cluster servers.
     * @deprecated
     */
    async getGameServerClusterServersV1Raw(requestParameters: GetGameServerClusterServersV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<any>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGameServerClusterServersV1().'
            );
        }

        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/clusters/{id}/servers`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.server.list</code>
     * Get a list of game server cluster servers.
     * @deprecated
     */
    async getGameServerClusterServersV1(id: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<any>> {
        const response = await this.getGameServerClusterServersV1Raw({ id: id, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.list</code>
     * Get a list of game server clusters.
     */
    async getGameServerClustersRaw(requestParameters: GetGameServerClustersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GameServerCluster>>> {
        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/clusters`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GameServerClusterFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.list</code>
     * Get a list of game server clusters.
     */
    async getGameServerClusters(page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GameServerCluster>> {
        const response = await this.getGameServerClustersRaw({ page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.list</code>
     * Get a list of game server clusters.
     * @deprecated
     */
    async getGameServerClustersV1Raw(requestParameters: GetGameServerClustersV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GameServerCluster>>> {
        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/clusters`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GameServerClusterFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.list</code>
     * Get a list of game server clusters.
     * @deprecated
     */
    async getGameServerClustersV1(page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GameServerCluster>> {
        const response = await this.getGameServerClustersV1Raw({ page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.queries</code>
     * Get a game server query history.
     */
    async getGameServerQueriesRaw(requestParameters: GetGameServerQueriesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GameServerQuery>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGameServerQueries().'
            );
        }

        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/{id}/queries`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GameServerQueryFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.queries</code>
     * Get a game server query history.
     */
    async getGameServerQueries(id: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GameServerQuery>> {
        const response = await this.getGameServerQueriesRaw({ id: id, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.queries</code>
     * Get a game server query history.
     * @deprecated
     */
    async getGameServerQueriesV1Raw(requestParameters: GetGameServerQueriesV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GameServerQuery>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGameServerQueriesV1().'
            );
        }

        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/servers/{id}/queries`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GameServerQueryFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.queries</code>
     * Get a game server query history.
     * @deprecated
     */
    async getGameServerQueriesV1(id: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GameServerQuery>> {
        const response = await this.getGameServerQueriesV1Raw({ id: id, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.list</code>
     * Get a list of game servers.
     */
    async getGameServersRaw(requestParameters: GetGameServersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GameServer>>> {
        const queryParameters: any = {};

        if (requestParameters['address'] != null) {
            queryParameters['address'] = requestParameters['address'];
        }

        if (requestParameters['queryPort'] != null) {
            queryParameters['query_port'] = requestParameters['queryPort'];
        }

        if (requestParameters['country'] != null) {
            queryParameters['country'] = requestParameters['country'];
        }

        if (requestParameters['gameId'] != null) {
            queryParameters['game_id'] = requestParameters['gameId'];
        }

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GameServerFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.list</code>
     * Get a list of game servers.
     */
    async getGameServers(address?: string, queryPort?: number, country?: string, gameId?: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GameServer>> {
        const response = await this.getGameServersRaw({ address: address, queryPort: queryPort, country: country, gameId: gameId, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.list.country</code>
     * Get a list of game servers from a country.
     */
    async getGameServersByCountryRaw(requestParameters: GetGameServersByCountryRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GameServer>>> {
        if (requestParameters['country'] == null) {
            throw new runtime.RequiredError(
                'country',
                'Required parameter "country" was null or undefined when calling getGameServersByCountry().'
            );
        }

        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/country/{country}`.replace(`{${"country"}}`, encodeURIComponent(String(requestParameters['country']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GameServerFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.list.country</code>
     * Get a list of game servers from a country.
     */
    async getGameServersByCountry(country: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GameServer>> {
        const response = await this.getGameServersByCountryRaw({ country: country, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.list.country</code>
     * Get a list of game servers from a country.
     * @deprecated
     */
    async getGameServersByCountryV1Raw(requestParameters: GetGameServersByCountryV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GameServer>>> {
        if (requestParameters['country'] == null) {
            throw new runtime.RequiredError(
                'country',
                'Required parameter "country" was null or undefined when calling getGameServersByCountryV1().'
            );
        }

        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/servers/country/{country}`.replace(`{${"country"}}`, encodeURIComponent(String(requestParameters['country']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GameServerFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.list.country</code>
     * Get a list of game servers from a country.
     * @deprecated
     */
    async getGameServersByCountryV1(country: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GameServer>> {
        const response = await this.getGameServersByCountryV1Raw({ country: country, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.country.list</code>
     * Get a list of countries with the number of game servers.
     */
    async getGameServersCountriesRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: number; }>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/countries`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.country.list</code>
     * Get a list of countries with the number of game servers.
     */
    async getGameServersCountries(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: number; }> {
        const response = await this.getGameServersCountriesRaw(initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.country.list</code>
     * Get a list of countries with the number of game servers.
     * @deprecated
     */
    async getGameServersCountriesV1Raw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: number; }>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/servers/countries`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.country.list</code>
     * Get a list of countries with the number of game servers.
     * @deprecated
     */
    async getGameServersCountriesV1(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: number; }> {
        const response = await this.getGameServersCountriesV1Raw(initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.metric.get</code>
     * Get metrics about the tracked game servers.
     */
    async getGameServersMetricsRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ServerMetrics>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/metrics`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ServerMetricsFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.metric.get</code>
     * Get metrics about the tracked game servers.
     */
    async getGameServersMetrics(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ServerMetrics> {
        const response = await this.getGameServersMetricsRaw(initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.metric.get</code>
     * Get metrics about the tracked game servers.
     * @deprecated
     */
    async getGameServersMetricsV1Raw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ServerMetrics>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/servers/metrics`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ServerMetricsFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.metric.get</code>
     * Get metrics about the tracked game servers.
     * @deprecated
     */
    async getGameServersMetricsV1(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ServerMetrics> {
        const response = await this.getGameServersMetricsV1Raw(initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.list</code>
     * Get a list of game servers.
     * @deprecated
     */
    async getGameServersV1Raw(requestParameters: GetGameServersV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GameServer>>> {
        const queryParameters: any = {};

        if (requestParameters['address'] != null) {
            queryParameters['address'] = requestParameters['address'];
        }

        if (requestParameters['queryPort'] != null) {
            queryParameters['query_port'] = requestParameters['queryPort'];
        }

        if (requestParameters['country'] != null) {
            queryParameters['country'] = requestParameters['country'];
        }

        if (requestParameters['gameId'] != null) {
            queryParameters['game_id'] = requestParameters['gameId'];
        }

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/servers`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GameServerFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.list</code>
     * Get a list of game servers.
     * @deprecated
     */
    async getGameServersV1(address?: string, queryPort?: number, country?: string, gameId?: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GameServer>> {
        const response = await this.getGameServersV1Raw({ address: address, queryPort: queryPort, country: country, gameId: gameId, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.list</code>
     * Get a list of games.
     */
    async getGamesRaw(requestParameters: GetGamesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Game>>> {
        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GameFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.list</code>
     * Get a list of games.
     */
    async getGames(page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Game>> {
        const response = await this.getGamesRaw({ page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.get</code>
     * Get a group by id.
     */
    async getGroupByIdRaw(requestParameters: GetGroupByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Group>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGroupById().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/groups/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => GroupFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.get</code>
     * Get a group by id.
     */
    async getGroupById(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Group> {
        const response = await this.getGroupByIdRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.get.tag</code>
     * Get a group by tag.
     */
    async getGroupByTagRaw(requestParameters: GetGroupByTagRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Group>> {
        if (requestParameters['tag'] == null) {
            throw new runtime.RequiredError(
                'tag',
                'Required parameter "tag" was null or undefined when calling getGroupByTag().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/groups/tag/{tag}`.replace(`{${"tag"}}`, encodeURIComponent(String(requestParameters['tag']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => GroupFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.get.tag</code>
     * Get a group by tag.
     */
    async getGroupByTag(tag: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Group> {
        const response = await this.getGroupByTagRaw({ tag: tag }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.get.uuid</code>
     * Get a group by uuid.
     */
    async getGroupByUuidRaw(requestParameters: GetGroupByUuidRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Group>> {
        if (requestParameters['uuid'] == null) {
            throw new runtime.RequiredError(
                'uuid',
                'Required parameter "uuid" was null or undefined when calling getGroupByUuid().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/groups/uuid/{uuid}`.replace(`{${"uuid"}}`, encodeURIComponent(String(requestParameters['uuid']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => GroupFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.get.uuid</code>
     * Get a group by uuid.
     */
    async getGroupByUuid(uuid: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Group> {
        const response = await this.getGroupByUuidRaw({ uuid: uuid }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.game.list</code>
     * Get a list of games of a group.
     */
    async getGroupGamesRaw(requestParameters: GetGroupGamesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GroupApplication>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGroupGames().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/groups/{id}/games`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GroupApplicationFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.game.list</code>
     * Get a list of games of a group.
     */
    async getGroupGames(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GroupApplication>> {
        const response = await this.getGroupGamesRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.member.list</code>
     * Get a list of members in a group.
     */
    async getGroupMembersRaw(requestParameters: GetGroupMembersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GroupMember>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getGroupMembers().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/groups/{id}/members`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GroupMemberFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.member.list</code>
     * Get a list of members in a group.
     */
    async getGroupMembers(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GroupMember>> {
        const response = await this.getGroupMembersRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.list</code>
     * Get a list of groups.
     */
    async getGroupsRaw(requestParameters: GetGroupsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Group>>> {
        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/groups`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GroupFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.list</code>
     * Get a list of groups.
     */
    async getGroups(page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Group>> {
        const response = await this.getGroupsRaw({ page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * Get a ip address location.
     */
    async getIpAddressRaw(requestParameters: GetIpAddressRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IpAddress>> {
        if (requestParameters['address'] == null) {
            throw new runtime.RequiredError(
                'address',
                'Required parameter "address" was null or undefined when calling getIpAddress().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/geoip/addresses/{address}`.replace(`{${"address"}}`, encodeURIComponent(String(requestParameters['address']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IpAddressFromJSON(jsonValue));
    }

    /**
     * Get a ip address location.
     */
    async getIpAddress(address: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IpAddress> {
        const response = await this.getIpAddressRaw({ address: address }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.geoip.address.list</code>
     * Get a list of ip addresses.
     */
    async getIpAddressesRaw(requestParameters: GetIpAddressesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<IpAddress>>> {
        const queryParameters: any = {};

        if (requestParameters['organizationId'] != null) {
            queryParameters['organization_id'] = requestParameters['organizationId'];
        }

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/geoip/addresses`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(IpAddressFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.geoip.address.list</code>
     * Get a list of ip addresses.
     */
    async getIpAddresses(organizationId?: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<IpAddress>> {
        const response = await this.getIpAddressesRaw({ organizationId: organizationId, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.leaderboard.get</code>
     * Get the top 20 leaderboard users.
     */
    async getLeaderboardRaw(requestParameters: GetLeaderboardRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<LeaderboardItem>>> {
        const queryParameters: any = {};

        if (requestParameters['order'] != null) {
            queryParameters['Order'] = requestParameters['order'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/leaderboard`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(LeaderboardItemFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.leaderboard.get</code>
     * Get the top 20 leaderboard users.
     */
    async getLeaderboard(order?: LeaderboardOrder, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<LeaderboardItem>> {
        const response = await this.getLeaderboardRaw({ order: order }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.package.get</code>
     * Get a package by id.
     */
    async getPackageByIdRaw(requestParameters: GetPackageByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Package>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getPackageById().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/packages/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => PackageFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.package.get</code>
     * Get a package by id.
     */
    async getPackageById(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Package> {
        const response = await this.getPackageByIdRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.package.list</code>
     * Get a list of packages.
     */
    async getPackagesRaw(requestParameters: GetPackagesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Package>>> {
        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/packages`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PackageFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.package.list</code>
     * Get a list of packages.
     */
    async getPackages(page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Package>> {
        const response = await this.getPackagesRaw({ page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.store.product.get</code>
     * Get a product by id.
     */
    async getProductByIdRaw(requestParameters: GetProductByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Product>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getProductById().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/products/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ProductFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.store.product.get</code>
     * Get a product by id.
     */
    async getProductById(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Product> {
        const response = await this.getProductByIdRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.store.product.list</code>
     * Get a list of products.
     */
    async getProductsRaw(requestParameters: GetProductsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Product>>> {
        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/products`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ProductFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.store.product.list</code>
     * Get a list of products.
     */
    async getProducts(page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Product>> {
        const response = await this.getProductsRaw({ page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * Get the public keys for the client.
     */
    async getPublicKeysRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/jwks`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Get the public keys for the client.
     */
    async getPublicKeys(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.getPublicKeysRaw(initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.user.account.list</code>
     * Get a list of connected accounts of the user.
     */
    async getUserAccountsRaw(requestParameters: GetUserAccountsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Account>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserAccounts().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/{id}/accounts`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(AccountFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.user.account.list</code>
     * Get a list of connected accounts of the user.
     */
    async getUserAccounts(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Account>> {
        const response = await this.getUserAccountsRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.friend.list</code>
     * Get a list of friends of the user.
     */
    async getUserFriendsRaw(requestParameters: GetUserFriendsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<any>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserFriends().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/profiles/{id}/friends`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.friend.list</code>
     * Get a list of friends of the user.
     */
    async getUserFriends(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<any>> {
        const response = await this.getUserFriendsRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.friend.list</code>
     * Get a list of friends of the user.
     * @deprecated
     */
    async getUserFriendsV1Raw(requestParameters: GetUserFriendsV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<any>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserFriendsV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/{id}/friends`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.friend.list</code>
     * Get a list of friends of the user.
     * @deprecated
     */
    async getUserFriendsV1(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<any>> {
        const response = await this.getUserFriendsV1Raw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.game.list</code>
     * Get a list of games the user has played.
     */
    async getUserGamesRaw(requestParameters: GetUserGamesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<ProfileGame>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserGames().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/profiles/{id}/games`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ProfileGameFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.game.list</code>
     * Get a list of games the user has played.
     */
    async getUserGames(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<ProfileGame>> {
        const response = await this.getUserGamesRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.game.list</code>
     * Get a list of games the user has played.
     * @deprecated
     */
    async getUserGamesV1Raw(requestParameters: GetUserGamesV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<ProfileGame>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserGamesV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/{id}/games`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ProfileGameFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.game.list</code>
     * Get a list of games the user has played.
     * @deprecated
     */
    async getUserGamesV1(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<ProfileGame>> {
        const response = await this.getUserGamesV1Raw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.group.list</code>
     * Get a list of groups the user is a member of.
     */
    async getUserGroupsRaw(requestParameters: GetUserGroupsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<ProfileGroup>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserGroups().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/profiles/{id}/groups`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ProfileGroupFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.group.list</code>
     * Get a list of groups the user is a member of.
     */
    async getUserGroups(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<ProfileGroup>> {
        const response = await this.getUserGroupsRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.group.list</code>
     * Get a list of groups the user is a member of.
     * @deprecated
     */
    async getUserGroupsV1Raw(requestParameters: GetUserGroupsV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<ProfileGroup>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserGroupsV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/{id}/groups`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ProfileGroupFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.group.list</code>
     * Get a list of groups the user is a member of.
     * @deprecated
     */
    async getUserGroupsV1(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<ProfileGroup>> {
        const response = await this.getUserGroupsV1Raw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.user.info</code>
     * Get current user information.
     */
    async getUserInfoRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<UserInfo>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/userinfo`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => UserInfoFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.user.info</code>
     * Get current user information.
     */
    async getUserInfo(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<UserInfo> {
        const response = await this.getUserInfoRaw(initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get</code>
     * Get a user profile by id.
     */
    async getUserProfileByIdRaw(requestParameters: GetUserProfileByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Profile>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserProfileById().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/profiles/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ProfileFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get</code>
     * Get a user profile by id.
     */
    async getUserProfileById(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Profile> {
        const response = await this.getUserProfileByIdRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get</code>
     * Get a user profile by id.
     * @deprecated
     */
    async getUserProfileByIdV1Raw(requestParameters: GetUserProfileByIdV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Profile>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserProfileByIdV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ProfileFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get</code>
     * Get a user profile by id.
     * @deprecated
     */
    async getUserProfileByIdV1(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Profile> {
        const response = await this.getUserProfileByIdV1Raw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get.name</code>
     * Get a user profile by name.
     */
    async getUserProfileByNameRaw(requestParameters: GetUserProfileByNameRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Profile>> {
        if (requestParameters['name'] == null) {
            throw new runtime.RequiredError(
                'name',
                'Required parameter "name" was null or undefined when calling getUserProfileByName().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/profiles/name/{name}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters['name']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ProfileFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get.name</code>
     * Get a user profile by name.
     */
    async getUserProfileByName(name: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Profile> {
        const response = await this.getUserProfileByNameRaw({ name: name }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get.name</code>
     * Get a user profile by name.
     * @deprecated
     */
    async getUserProfileByNameV1Raw(requestParameters: GetUserProfileByNameV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Profile>> {
        if (requestParameters['name'] == null) {
            throw new runtime.RequiredError(
                'name',
                'Required parameter "name" was null or undefined when calling getUserProfileByNameV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/name/{name}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters['name']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ProfileFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get.name</code>
     * Get a user profile by name.
     * @deprecated
     */
    async getUserProfileByNameV1(name: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Profile> {
        const response = await this.getUserProfileByNameV1Raw({ name: name }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get.uuid</code>
     * Get a user profile by uuid.
     */
    async getUserProfileByUuidRaw(requestParameters: GetUserProfileByUuidRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Profile>> {
        if (requestParameters['uuid'] == null) {
            throw new runtime.RequiredError(
                'uuid',
                'Required parameter "uuid" was null or undefined when calling getUserProfileByUuid().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/profiles/uuid/{uuid}`.replace(`{${"uuid"}}`, encodeURIComponent(String(requestParameters['uuid']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ProfileFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get.uuid</code>
     * Get a user profile by uuid.
     */
    async getUserProfileByUuid(uuid: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Profile> {
        const response = await this.getUserProfileByUuidRaw({ uuid: uuid }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get.uuid</code>
     * Get a user profile by uuid.
     * @deprecated
     */
    async getUserProfileByUuidV1Raw(requestParameters: GetUserProfileByUuidV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Profile>> {
        if (requestParameters['uuid'] == null) {
            throw new runtime.RequiredError(
                'uuid',
                'Required parameter "uuid" was null or undefined when calling getUserProfileByUuidV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/uuid/{uuid}`.replace(`{${"uuid"}}`, encodeURIComponent(String(requestParameters['uuid']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ProfileFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.get.uuid</code>
     * Get a user profile by uuid.
     * @deprecated
     */
    async getUserProfileByUuidV1(uuid: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Profile> {
        const response = await this.getUserProfileByUuidV1Raw({ uuid: uuid }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.list</code>
     * Get a list of user profiles.
     */
    async getUserProfilesRaw(requestParameters: GetUserProfilesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Profile>>> {
        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/profiles`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ProfileFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.list</code>
     * Get a list of user profiles.
     */
    async getUserProfiles(page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Profile>> {
        const response = await this.getUserProfilesRaw({ page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.list</code>
     * Get a list of user profiles.
     * @deprecated
     */
    async getUserProfilesV1Raw(requestParameters: GetUserProfilesV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Profile>>> {
        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ProfileFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.list</code>
     * Get a list of user profiles.
     * @deprecated
     */
    async getUserProfilesV1(page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Profile>> {
        const response = await this.getUserProfilesV1Raw({ page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.sanction.list</code>
     * Get a list of sanctions the user has received.
     */
    async getUserSanctionsRaw(requestParameters: GetUserSanctionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<any>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserSanctions().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/profiles/{id}/sanctions`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.sanction.list</code>
     * Get a list of sanctions the user has received.
     */
    async getUserSanctions(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<any>> {
        const response = await this.getUserSanctionsRaw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.sanction.list</code>
     * Get a list of sanctions the user has received.
     * @deprecated
     */
    async getUserSanctionsV1Raw(requestParameters: GetUserSanctionsV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<any>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserSanctionsV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/{id}/sanctions`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.sanction.list</code>
     * Get a list of sanctions the user has received.
     * @deprecated
     */
    async getUserSanctionsV1(id: string, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<any>> {
        const response = await this.getUserSanctionsV1Raw({ id: id }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.game.server.list</code>
     * Get a list of servers the user is owner of.
     */
    async getUserServersRaw(requestParameters: GetUserServersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GameServer>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserServers().'
            );
        }

        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/profiles/{id}/servers`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GameServerFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.game.server.list</code>
     * Get a list of servers the user is owner of.
     */
    async getUserServers(id: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GameServer>> {
        const response = await this.getUserServersRaw({ id: id, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.game.server.list</code>
     * Get a list of servers the user is owner of.
     * @deprecated
     */
    async getUserServersV1Raw(requestParameters: GetUserServersV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GameServer>>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling getUserServersV1().'
            );
        }

        const queryParameters: any = {};

        if (requestParameters['page'] != null) {
            queryParameters['page'] = requestParameters['page'];
        }

        if (requestParameters['limit'] != null) {
            queryParameters['limit'] = requestParameters['limit'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/{id}/servers`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GameServerFromJSON));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.game.server.list</code>
     * Get a list of servers the user is owner of.
     * @deprecated
     */
    async getUserServersV1(id: string, page?: number, limit?: number, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GameServer>> {
        const response = await this.getUserServersV1Raw({ id: id, page: page, limit: limit }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.hash.argon2</code>
     * Hash a string using argon2.
     */
    async hashArgon2Raw(requestParameters: HashArgon2Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<HashViewModel>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/utils/argon2`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: HashViewModelToJSON(requestParameters['hashViewModel']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => HashViewModelFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.hash.argon2</code>
     * Hash a string using argon2.
     */
    async hashArgon2(hashViewModel?: HashViewModel, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<HashViewModel> {
        const response = await this.hashArgon2Raw({ hashViewModel: hashViewModel }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.hash.bcrypt</code>
     * Hash a string using bcrypt.
     */
    async hashBcryptRaw(requestParameters: HashBcryptRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<HashViewModel>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/utils/bcrypt`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: HashViewModelToJSON(requestParameters['hashViewModel']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => HashViewModelFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.hash.bcrypt</code>
     * Hash a string using bcrypt.
     */
    async hashBcrypt(hashViewModel?: HashViewModel, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<HashViewModel> {
        const response = await this.hashBcryptRaw({ hashViewModel: hashViewModel }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.hash.md5</code>
     * Hash a string using md5.
     */
    async hashMd5Raw(requestParameters: HashMd5Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<HashViewModel>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/utils/md5`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: HashViewModelToJSON(requestParameters['hashViewModel']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => HashViewModelFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.hash.md5</code>
     * Hash a string using md5.
     */
    async hashMd5(hashViewModel?: HashViewModel, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<HashViewModel> {
        const response = await this.hashMd5Raw({ hashViewModel: hashViewModel }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.hash.sha256</code>
     * Hash a string using sha256.
     */
    async hashSha256Raw(requestParameters: HashSha256Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<HashViewModel>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/utils/sha256`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: HashViewModelToJSON(requestParameters['hashViewModel']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => HashViewModelFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.utils.hash.sha256</code>
     * Hash a string using sha256.
     */
    async hashSha256(hashViewModel?: HashViewModel, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<HashViewModel> {
        const response = await this.hashSha256Raw({ hashViewModel: hashViewModel }, initOverrides);
        return await response.value();
    }

    /**
     * Introspect a token.
     */
    async introspectTokenRaw(requestParameters: IntrospectTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<IntrospectResponse>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/introspect`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: IntrospectRequestToJSON(requestParameters['introspectRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => IntrospectResponseFromJSON(jsonValue));
    }

    /**
     * Introspect a token.
     */
    async introspectToken(introspectRequest?: IntrospectRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<IntrospectResponse> {
        const response = await this.introspectTokenRaw({ introspectRequest: introspectRequest }, initOverrides);
        return await response.value();
    }

    /**
     * Revoke a token.
     */
    async revokeTokenRaw(requestParameters: RevokeTokenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/revoke`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: RevokeRequestToJSON(requestParameters['revokeRequest']),
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Revoke a token.
     */
    async revokeToken(revokeRequest?: RevokeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.revokeTokenRaw({ revokeRequest: revokeRequest }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.search</code>
     * Advanced search.
     */
    async searchRaw(requestParameters: SearchRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<any>>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/search`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: SearchToJSON(requestParameters['search']),
        }, initOverrides);

        return new runtime.JSONApiResponse<any>(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.search</code>
     * Advanced search.
     */
    async search(search?: Search, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<any>> {
        const response = await this.searchRaw({ search: search }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.client.update</code>
     * Update an oauth2 client.
     */
    async updateClientRaw(requestParameters: UpdateClientRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling updateClient().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/oauth2/clients/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.identity.oauth2.client.update</code>
     * Update an oauth2 client.
     */
    async updateClient(id: string, body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.updateClientRaw({ id: id, body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.update</code>
     * Update a game server.
     */
    async updateGameServerRaw(requestParameters: UpdateGameServerRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling updateGameServer().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.update</code>
     * Update a game server.
     */
    async updateGameServer(id: string, body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.updateGameServerRaw({ id: id, body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.update</code>
     * Update a game server cluster.
     */
    async updateGameServerClusterRaw(requestParameters: UpdateGameServerClusterRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling updateGameServerCluster().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/games/servers/clusters/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.update</code>
     * Update a game server cluster.
     */
    async updateGameServerCluster(id: string, body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.updateGameServerClusterRaw({ id: id, body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.update</code>
     * Update a game server cluster.
     * @deprecated
     */
    async updateGameServerClusterV1Raw(requestParameters: UpdateGameServerClusterV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling updateGameServerClusterV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/clusters/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.cluster.update</code>
     * Update a game server cluster.
     * @deprecated
     */
    async updateGameServerClusterV1(id: string, body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.updateGameServerClusterV1Raw({ id: id, body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.update</code>
     * Update a game server.
     * @deprecated
     */
    async updateGameServerV1Raw(requestParameters: UpdateGameServerV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling updateGameServerV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/servers/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.game.server.update</code>
     * Update a game server.
     * @deprecated
     */
    async updateGameServerV1(id: string, body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.updateGameServerV1Raw({ id: id, body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.update</code>
     * Update a group.
     */
    async updateGroupRaw(requestParameters: UpdateGroupRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling updateGroup().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/groups/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters['body'] as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.group.update</code>
     * Update a group.
     */
    async updateGroup(id: string, body?: any | null, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.updateGroupRaw({ id: id, body: body }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.package.update</code>
     * Update an package.
     */
    async updatePackageRaw(requestParameters: UpdatePackageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling updatePackage().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/packages/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: PackageToJSON(requestParameters['_package']),
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.package.update</code>
     * Update an package.
     */
    async updatePackage(id: string, _package?: Package, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.updatePackageRaw({ id: id, _package: _package }, initOverrides);
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.update</code>
     * Update a user profile.
     */
    async updateUserProfileRaw(requestParameters: UpdateUserProfileRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Profile>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling updateUserProfile().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/profiles/{id}/profile`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: UpdateProfileToJSON(requestParameters['updateProfile']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ProfileFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.update</code>
     * Update a user profile.
     */
    async updateUserProfile(id: string, updateProfile?: UpdateProfile, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Profile> {
        const response = await this.updateUserProfileRaw({ id: id, updateProfile: updateProfile }, initOverrides);
        return await response.value();
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.update</code>
     * Update a user profile.
     * @deprecated
     */
    async updateUserProfileV1Raw(requestParameters: UpdateUserProfileV1Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Profile>> {
        if (requestParameters['id'] == null) {
            throw new runtime.RequiredError(
                'id',
                'Required parameter "id" was null or undefined when calling updateUserProfileV1().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKey authentication
        }

        const response = await this.request({
            path: `/v1/users/{id}/profile`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: UpdateProfileToJSON(requestParameters['updateProfile']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => ProfileFromJSON(jsonValue));
    }

    /**
     * <b>🔒 Required permissions:</b> <code>tribufu.community.profile.update</code>
     * Update a user profile.
     * @deprecated
     */
    async updateUserProfileV1(id: string, updateProfile?: UpdateProfile, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Profile> {
        const response = await this.updateUserProfileV1Raw({ id: id, updateProfile: updateProfile }, initOverrides);
        return await response.value();
    }

}
