/* tslint:disable */
/* eslint-disable */
/**
 * MongoDB Atlas App Services Admin API
 * The App Services Admin API lets you programmatically perform administrative tasks over HTTPS. This includes defining & configuring things like:  - App Deployment & Security - APIs & Endpoints - Authentication & User Management - Data Sources - Device Sync - Environments - Functions - Logs - Rules - Schemas - Static Hosting - Triggers - Usage & Billing Metrics - Values & Secrets  The Admin API is for application development, configuration, and deployment. To actually use the features you configure with the Admin API, client applications connect with a [Realm SDK](https://mongodb.com/docs/realm/) or over an HTTPS API specific to your App.  ## Project & Application IDs  **Note**: The terms _Project ID_ and _Group ID_ are interchangeable.  Atlas App Services Admin API endpoints frequently require you to include two parameters in the URL:  - Your Atlas _Project ID_ (also sometimes called a _Group ID_) - Your App Services _Application ID_  ### Project ID  You can find your Project ID from the MongoDB Atlas dashboard or with the MongoDB Atlas CLI.  ### Application ID  To find an Application ID, make a request to the [List Apps](#operation/adminListApplications) endpoint for your project. You\'ll need an `access_token` to make this request. To learn how to get one, see [Get an Admin API Session Access Token](#get-an-admin-api-session-access-token).  ```sh curl --request GET \\   --header \'Authorization: Bearer <access_token>\' \\   https://realm.mongodb.com/api/admin/v3.0/groups/{groupId}/apps ```  This will return a list of objects describing each App Services App in the provided project/group. For Admin API requests, your Application ID is the ObjectId value in the `_id` field, _not_ the `client_app_id`.  ```json [   {     \"_id\": \"5997529e46224c6e42gb6dd9\",     \"group_id\": \"57879f6cc4b32dbe440bb8c5\",     \"domain_id\": \"5886619e46124e4c42fb5dd8\",     \"client_app_id\": \"myapp-abcde\",     \"name\": \"myapp\",     \"location\": \"US-VA\",     \"deployment_model\": \"GLOBAL\",     \"last_used\": 1615153544,     \"last_modified\": 0,     \"product\": \"standard\",     \"environment\": \"\"   } ] ```  ## Get an Admin API Session Access Token  Every request to the App Services Admin API must include a valid, unexpired access token issued by the MongoDB Cloud API. You include this token in the `Authorization` header of each request using the bearer auth scheme.  You need a valid [MongoDB Atlas programmatic API key](https://docs.atlas.mongodb.com/configure-api-access) for MongoDB Atlas to get a token.  Once you have an API key pair, call the authentication endpoint:  ```shell curl --request POST \\   --header \'Content-Type: application/json\' \\   --header \'Accept: application/json\' \\   --data \'{\"username\": \"<Public API Key>\", \"apiKey\": \"<Private API Key>\"}\' \\   https://realm.mongodb.com/api/admin/v3.0/auth/providers/mongodb-cloud/login ```  If authentication succeeds, App Services returns an access token as part of the JSON response document:  ```json {   \"access_token\": \"<access_token>\",   \"refresh_token\": \"<refresh_token>\",   \"user_id\": \"<user_id>\",   \"device_id\": \"<device_id>\" } ```  The `access_token` represents a limited-time authorization to interact with the Admin API. To authenticate a request, include the token in a [Bearer token](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication) `Authorization` header.  ```http Authorization: Bearer <access_token> ```  ## Refresh an Admin API Session Access Token  Session access tokens expire 30 minutes after they are issued. When you login, the response also includes a `refresh_token` that you can use to get a new access token. This is useful because you only need to log in with credentials one time. After that you can use the refresh token to re-authenticate for as long as its valid.  Refresh tokens expire 60 days after being issued.  To refresh your authentication and get a new `access_token`, call the auth session endpoint with your `refresh_token` in the `Authorization` header:  ```shell curl --request POST \\   --header \'Authorization: Bearer <refresh_token>\' \\   https://realm.mongodb.com/api/admin/v3.0/auth/session ```  If the refresh token is valid, the response body includes a new `access_token` that\'s valid for the next 30 minutes:  ```json {   \"access_token\": \"<access_token>\" } ```
 *
 * The version of the OpenAPI document: 3.0
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


import type { Configuration } from './configuration';
import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios';
import globalAxios from 'axios';
// Some imports not used depending on template conditions
// @ts-ignore
import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from './common';
import type { RequestArgs } from './base';
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, BaseAPI, RequiredError } from './base';

/**
 * 
 * @export
 * @interface AdminAppMeasurements200Response
 */
export interface AdminAppMeasurements200Response {
    /**
     * The RFC 3339 date and time of the start of the query period, which can be specified with the `start` query parameter.
     * @type {any}
     * @memberof AdminAppMeasurements200Response
     */
    'start'?: any;
    /**
     * The RFC 3339 date and time of the end of the query period, which can be specified with the `end` query parameter.
     * @type {any}
     * @memberof AdminAppMeasurements200Response
     */
    'end'?: any;
    /**
     * The granularity, which can be specified with the `granularity` query parameter.
     * @type {any}
     * @memberof AdminAppMeasurements200Response
     */
    'granularity'?: any;
    /**
     * The Atlas [Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @type {any}
     * @memberof AdminAppMeasurements200Response
     */
    'group_id'?: any;
    /**
     * The Atlas App Services App ID specified by the `appId` path parameter.
     * @type {any}
     * @memberof AdminAppMeasurements200Response
     */
    'appId'?: any;
    /**
     * The name of the Atlas App Services App specified by the `appId` path parameter.
     * @type {any}
     * @memberof AdminAppMeasurements200Response
     */
    'appName'?: any;
    /**
     * The array of measurements.
     * @type {any}
     * @memberof AdminAppMeasurements200Response
     */
    'measurements'?: any;
}
/**
 * 
 * @export
 * @interface AdminCreateASecretRequest
 */
export interface AdminCreateASecretRequest {
    /**
     * 
     * @type {any}
     * @memberof AdminCreateASecretRequest
     */
    'name': any;
    /**
     * 
     * @type {any}
     * @memberof AdminCreateASecretRequest
     */
    'value': any;
}
/**
 * 
 * @export
 * @interface AdminCreateApiKeyRequest
 */
export interface AdminCreateApiKeyRequest {
    /**
     * 
     * @type {any}
     * @memberof AdminCreateApiKeyRequest
     */
    'name': any;
}
/**
 * 
 * @export
 * @interface AdminCreateFunction201Response
 */
export interface AdminCreateFunction201Response {
    /**
     * Unique identifier for the function.
     * @type {any}
     * @memberof AdminCreateFunction201Response
     */
    '_id'?: any;
    /**
     * Name for the function specified in the `name` field of the request.
     * @type {any}
     * @memberof AdminCreateFunction201Response
     */
    'name'?: any;
}
/**
 * 
 * @export
 * @interface AdminCreateRule201Response
 */
export interface AdminCreateRule201Response {
    /**
     * 
     * @type {any}
     * @memberof AdminCreateRule201Response
     */
    '_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof AdminCreateRule201Response
     */
    'name'?: any;
}
/**
 * 
 * @export
 * @interface AdminCreateSchema200Response
 */
export interface AdminCreateSchema200Response {
    /**
     * 
     * @type {any}
     * @memberof AdminCreateSchema200Response
     */
    '_id'?: any;
    /**
     * 
     * @type {SchemaMetadata}
     * @memberof AdminCreateSchema200Response
     */
    'metadata'?: SchemaMetadata;
}
/**
 * 
 * @export
 * @interface AdminCreateSchemaRequest
 */
export interface AdminCreateSchemaRequest {
    /**
     * 
     * @type {any}
     * @memberof AdminCreateSchemaRequest
     */
    '_id'?: any;
    /**
     * A valid [schema](https://www.mongodb.com/docs/realm/schemas) for the collection.
     * @type {any}
     * @memberof AdminCreateSchemaRequest
     */
    'schema': any;
    /**
     * 
     * @type {SchemaMetadata}
     * @memberof AdminCreateSchemaRequest
     */
    'metadata': SchemaMetadata;
}
/**
 * 
 * @export
 * @interface AdminCreateSession201Response
 */
export interface AdminCreateSession201Response {
    /**
     * 
     * @type {any}
     * @memberof AdminCreateSession201Response
     */
    'access_token'?: any;
}
/**
 * 
 * @export
 * @interface AdminCreateUserRequest
 */
export interface AdminCreateUserRequest {
    /**
     * 
     * @type {any}
     * @memberof AdminCreateUserRequest
     */
    'email': any;
    /**
     * 
     * @type {any}
     * @memberof AdminCreateUserRequest
     */
    'password': any;
}
/**
 * 
 * @export
 * @interface AdminDeployDraftRequest
 */
export interface AdminDeployDraftRequest {
    /**
     * The name of the deployment. To deploy a draft without a name, use an empty string. 
     * @type {any}
     * @memberof AdminDeployDraftRequest
     */
    'name': any;
}
/**
 * 
 * @export
 * @interface AdminEnableDisableHostingRequest
 */
export interface AdminEnableDisableHostingRequest {
    /**
     * Set to `true` to enable App Services Hosting. Set to `false` to disable App Services Hosting. 
     * @type {any}
     * @memberof AdminEnableDisableHostingRequest
     */
    'enabled'?: any;
}
/**
 * 
 * @export
 * @interface AdminExecuteFunction200Response
 */
export interface AdminExecuteFunction200Response {
    /**
     * 
     * @type {any}
     * @memberof AdminExecuteFunction200Response
     */
    'error'?: any;
    /**
     * 
     * @type {any}
     * @memberof AdminExecuteFunction200Response
     */
    'logs'?: any;
    /**
     * 
     * @type {any}
     * @memberof AdminExecuteFunction200Response
     */
    'result'?: any;
    /**
     * 
     * @type {AdminExecuteFunction200ResponseStats}
     * @memberof AdminExecuteFunction200Response
     */
    'stats'?: AdminExecuteFunction200ResponseStats;
}
/**
 * 
 * @export
 * @interface AdminExecuteFunction200ResponseStats
 */
export interface AdminExecuteFunction200ResponseStats {
    /**
     * 
     * @type {any}
     * @memberof AdminExecuteFunction200ResponseStats
     */
    'execution_time'?: any;
}
/**
 * 
 * @export
 * @interface AdminExecuteFunctionRequest
 */
export interface AdminExecuteFunctionRequest {
    /**
     * The service to use when calling this function.
     * @type {any}
     * @memberof AdminExecuteFunctionRequest
     */
    'service'?: any;
    /**
     * The name of the function you want to run.
     * @type {any}
     * @memberof AdminExecuteFunctionRequest
     */
    'name': any;
    /**
     * Any arguments that your function needs.
     * @type {any}
     * @memberof AdminExecuteFunctionRequest
     */
    'arguments'?: any;
}
/**
 * 
 * @export
 * @interface AdminExecuteFunctionSourceRequest
 */
export interface AdminExecuteFunctionSourceRequest {
    /**
     * This JSON expression must evaluate to `true` before the function may run. If this field is blank, it will evaluate to `true`.
     * @type {any}
     * @memberof AdminExecuteFunctionSourceRequest
     */
    'eval_source'?: any;
    /**
     * 
     * @type {any}
     * @memberof AdminExecuteFunctionSourceRequest
     */
    'source': any;
}
/**
 * 
 * @export
 * @interface AdminGenerateSchema200Response
 */
export interface AdminGenerateSchema200Response {
    /**
     * The generated JSON schema
     * @type {any}
     * @memberof AdminGenerateSchema200Response
     */
    'schema'?: any;
}
/**
 * 
 * @export
 * @interface AdminGenerateSchemaRequest
 */
export interface AdminGenerateSchemaRequest {
    /**
     * The name of the database that contains the collection.
     * @type {any}
     * @memberof AdminGenerateSchemaRequest
     */
    'database_name': any;
    /**
     * The name of the collection to sample and generate a schema for.
     * @type {any}
     * @memberof AdminGenerateSchemaRequest
     */
    'collection_name': any;
    /**
     * The maximum number of documents to include in the sample.
     * @type {any}
     * @memberof AdminGenerateSchemaRequest
     */
    'limit': any;
}
/**
 * 
 * @export
 * @interface AdminGetHostedAsset404Response
 */
export interface AdminGetHostedAsset404Response {
    /**
     * 
     * @type {any}
     * @memberof AdminGetHostedAsset404Response
     */
    'error'?: any;
}
/**
 * 
 * @export
 * @interface AdminGetLatestEventSubscriptionExecution200Response
 */
export interface AdminGetLatestEventSubscriptionExecution200Response {
    /**
     * 
     * @type {any}
     * @memberof AdminGetLatestEventSubscriptionExecution200Response
     */
    'data'?: any;
    /**
     * 
     * @type {any}
     * @memberof AdminGetLatestEventSubscriptionExecution200Response
     */
    'resource_id'?: any;
    /**
     * The last time a batch was processed from the event stream.  The value of `completed_at` should be relatively close to the current time. If `completed_at` is not updating over time, it might mean that the event processor (e.g. Device Sync) is down or stuck.
     * @type {any}
     * @memberof AdminGetLatestEventSubscriptionExecution200Response
     */
    'completed_at'?: any;
    /**
     * The time of the latest event in the most recently processed batch.  If the value of `cluster_time` is significantly earlier than the `completed_at` time, the event processor (e.g. Device Sync) is lagging behind the event .
     * @type {any}
     * @memberof AdminGetLatestEventSubscriptionExecution200Response
     */
    'cluster_time'?: any;
}
/**
 * 
 * @export
 * @interface AdminGetLogs200Response
 */
export interface AdminGetLogs200Response {
    /**
     * At most 100 results per request.
     * @type {any}
     * @memberof AdminGetLogs200Response
     */
    'logs'?: any;
    /**
     * The end date and time of the next page of log entries in ISO 8601 format. App Services paginates the result sets of queries that match more than 100 log entries and includes this field in paginated responses. To get the next page of up to 100 entries, pass this value as the `end_date` parameter in a subsequent request.
     * @type {any}
     * @memberof AdminGetLogs200Response
     */
    'nextEndDate': any;
    /**
     * The offset into the next page of log entries in ISO 8601 format. MongoDB App Services paginates the result sets of queries that match more than 100 log entries and includes this field in paginated responses where the first entry on the next page has the same timestamp as the last entry on this page. To get the next page of up to 100 entries, pass this value, if it is present, as the `skip` parameter in a subsequent request.
     * @type {any}
     * @memberof AdminGetLogs200Response
     */
    'nextSkip': any;
}
/**
 * 
 * @export
 * @interface AdminGetMetrics200Response
 */
export interface AdminGetMetrics200Response {
    /**
     * The list of metrics.
     * @type {any}
     * @memberof AdminGetMetrics200Response
     */
    'measurements': any;
    /**
     * The app ID sent in the request.
     * @type {any}
     * @memberof AdminGetMetrics200Response
     */
    'app_id': any;
    /**
     * The app\'s human-readable name.
     * @type {any}
     * @memberof AdminGetMetrics200Response
     */
    'app_name': any;
    /**
     * The group ID sent in the request.
     * @type {any}
     * @memberof AdminGetMetrics200Response
     */
    'group_id': any;
    /**
     * The date and time (ISO-8601 format) of the earliest requested measurement.
     * @type {any}
     * @memberof AdminGetMetrics200Response
     */
    'start': any;
    /**
     * The date and time (ISO-8601 format) of the latest requested measurement.
     * @type {any}
     * @memberof AdminGetMetrics200Response
     */
    'end': any;
    /**
     * The requested granularity of the metrics in [ISO-8601 duration format](https://en.wikipedia.org/wiki/ISO_8601#Durations).
     * @type {any}
     * @memberof AdminGetMetrics200Response
     */
    'granularity': any;
}
/**
 * 
 * @export
 * @interface AdminGetSchema200Response
 */
export interface AdminGetSchema200Response {
    /**
     * 
     * @type {any}
     * @memberof AdminGetSchema200Response
     */
    '_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof AdminGetSchema200Response
     */
    'schema'?: any;
}
/**
 * 
 * @export
 * @interface AdminLogin200Response
 */
export interface AdminLogin200Response {
    /**
     * An access token you may provide in the `Authorization` header of API requests. [The App Services API Authentication section](#section/Get-Authentication-Tokens) demonstrates how to use this token.
     * @type {any}
     * @memberof AdminLogin200Response
     */
    'access_token'?: any;
    /**
     * A refresh token you may provide in the `Authorization` header of [POST auth/session](#section/adminCreateSession) to obtain a new `access_token` for the current user session. 
     * @type {any}
     * @memberof AdminLogin200Response
     */
    'refresh_token'?: any;
    /**
     * The unique `_id` value of the MongoDB Cloud user.
     * @type {any}
     * @memberof AdminLogin200Response
     */
    'user_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof AdminLogin200Response
     */
    'device_id'?: any;
}
/**
 * 
 * @export
 * @interface AdminLoginRequest
 */
export interface AdminLoginRequest {
    /**
     * 
     * @type {any}
     * @memberof AdminLoginRequest
     */
    'username': any;
    /**
     * 
     * @type {any}
     * @memberof AdminLoginRequest
     */
    'apiKey': any;
}
/**
 * 
 * @export
 * @interface AdminMeasurements200Response
 */
export interface AdminMeasurements200Response {
    /**
     * The [RFC 3339](https://tools.ietf.org/html/3339) date and time of the start of the query period, which can be specified with the `start` query parameter.
     * @type {any}
     * @memberof AdminMeasurements200Response
     */
    'start'?: any;
    /**
     * The [RFC 3339](https://tools.ietf.org/html/3339) date and time of the end of the query period, which can be specified with the `end` query parameter.
     * @type {any}
     * @memberof AdminMeasurements200Response
     */
    'end'?: any;
    /**
     * The granularity, which can be specified with the `granularity` query parameter.
     * @type {any}
     * @memberof AdminMeasurements200Response
     */
    'granularity'?: any;
    /**
     * The Atlas [Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @type {any}
     * @memberof AdminMeasurements200Response
     */
    'group_id'?: any;
    /**
     * The array of measurements.
     * @type {any}
     * @memberof AdminMeasurements200Response
     */
    'measurements'?: any;
}
/**
 * 
 * @export
 * @interface AdminModifyASecretRequest
 */
export interface AdminModifyASecretRequest {
    /**
     * 
     * @type {any}
     * @memberof AdminModifyASecretRequest
     */
    '_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof AdminModifyASecretRequest
     */
    'name': any;
    /**
     * 
     * @type {any}
     * @memberof AdminModifyASecretRequest
     */
    'value': any;
}
/**
 * 
 * @export
 * @interface AdminMoveCopyHostedAssetRequest
 */
export interface AdminMoveCopyHostedAssetRequest {
    /**
     * The current resource path of the asset to move. Must be used with `move_to`.
     * @type {any}
     * @memberof AdminMoveCopyHostedAssetRequest
     */
    'move_from'?: any;
    /**
     * The resource path to which the asset will move. Must be used with `move_from`.
     * @type {any}
     * @memberof AdminMoveCopyHostedAssetRequest
     */
    'move_to'?: any;
    /**
     * The current resource path of the asset to copy. Must be used with `copy_to`.
     * @type {any}
     * @memberof AdminMoveCopyHostedAssetRequest
     */
    'copy_from'?: any;
    /**
     * The resource path to which the asset will be copied. Must be used with `copy_from`.
     * @type {any}
     * @memberof AdminMoveCopyHostedAssetRequest
     */
    'copy_to'?: any;
}
/**
 * 
 * @export
 * @interface AdminResetUserEmailRequest
 */
export interface AdminResetUserEmailRequest {
    /**
     * The new email for the user.
     * @type {any}
     * @memberof AdminResetUserEmailRequest
     */
    'email': any;
}
/**
 * 
 * @export
 * @interface AdminResumeTrigger404Response
 */
export interface AdminResumeTrigger404Response {
    /**
     * A description of the error that App Services encountered.
     * @type {any}
     * @memberof AdminResumeTrigger404Response
     */
    'error'?: any;
}
/**
 * 
 * @export
 * @interface AdminResumeTriggerRequest
 */
export interface AdminResumeTriggerRequest {
    /**
     * If `true`, resumes the trigger without processing missed events. Otherwise, attempts to resume the  trigger from the first change event after it failed by using  a resume token.
     * @type {any}
     * @memberof AdminResumeTriggerRequest
     */
    'disable_token'?: any;
}
/**
 * The result of the specified operation.
 * @export
 * @interface AdminRunGraphQLOperation200Response
 */
export interface AdminRunGraphQLOperation200Response {
    /**
     * The result of a successful operation. If `null`, the operation had errors.
     * @type {any}
     * @memberof AdminRunGraphQLOperation200Response
     */
    'data': any;
    /**
     * A list of errors encountered while running an operation.
     * @type {any}
     * @memberof AdminRunGraphQLOperation200Response
     */
    'errors'?: any;
}
/**
 * 
 * @export
 * @interface AdminRunGraphQLOperationRequest
 */
export interface AdminRunGraphQLOperationRequest {
    /**
     * A stringified `.graphql` file that contains one or more valid GraphQL operations for your API. If more than one operation is defined, you must specify which operation to run in `operationName`.
     * @type {any}
     * @memberof AdminRunGraphQLOperationRequest
     */
    'query': any;
    /**
     * A stringified JSON object where each field name maps a value to a variable in the specified operation.
     * @type {any}
     * @memberof AdminRunGraphQLOperationRequest
     */
    'variables'?: any;
    /**
     * The name of the GraphQL operation specified in `query` to run.
     * @type {any}
     * @memberof AdminRunGraphQLOperationRequest
     */
    'operationName'?: any;
}
/**
 * 
 * @export
 * @interface AdminSetEnvironmentRequest
 */
export interface AdminSetEnvironmentRequest {
    /**
     * 
     * @type {AppEnvironment}
     * @memberof AdminSetEnvironmentRequest
     */
    'environment'?: AppEnvironment;
}


/**
 * 
 * @export
 * @interface AdminUpdateHostedAssetRequest
 */
export interface AdminUpdateHostedAssetRequest {
    /**
     * 
     * @type {any}
     * @memberof AdminUpdateHostedAssetRequest
     */
    'attributes'?: any;
}
/**
 * 
 * @export
 * @interface AdminUpdateSchemaRequest
 */
export interface AdminUpdateSchemaRequest {
    /**
     * 
     * @type {any}
     * @memberof AdminUpdateSchemaRequest
     */
    '_id'?: any;
    /**
     * A valid [schema](https://www.mongodb.com/docs/realm/schemas) for the collection.
     * @type {any}
     * @memberof AdminUpdateSchemaRequest
     */
    'schema': any;
    /**
     * Relationships to foreign collections. Each field name is a property in the schema. The corresponding value is a [relationship](https://www.mongodb.com/docs/realm/schemas/relationships/) definition for that field.
     * @type {{ [key: string]: Relationship; }}
     * @memberof AdminUpdateSchemaRequest
     */
    'relationships'?: { [key: string]: Relationship; };
    /**
     * 
     * @type {SchemaMetadata}
     * @memberof AdminUpdateSchemaRequest
     */
    'metadata'?: SchemaMetadata;
}
/**
 * 
 * @export
 * @interface AdminUploadHostedAssetRequest
 */
export interface AdminUploadHostedAssetRequest {
    /**
     * An [asset metadata document](https://www.mongodb.com/docs/realm/admin/api/v3#std-label-asset-metadata-document) (encoded as JSON).
     * @type {AssetMetadata}
     * @memberof AdminUploadHostedAssetRequest
     */
    'meta'?: AssetMetadata;
    /**
     * The asset file to upload (encoded as binary).
     * @type {any}
     * @memberof AdminUploadHostedAssetRequest
     */
    'file'?: any;
}
/**
 * 
 * @export
 * @interface AdminUser
 */
export interface AdminUser {
    /**
     * 
     * @type {any}
     * @memberof AdminUser
     */
    'user_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof AdminUser
     */
    'domain_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof AdminUser
     */
    'identities'?: any;
    /**
     * 
     * @type {AdminUserData}
     * @memberof AdminUser
     */
    'data'?: AdminUserData;
    /**
     * 
     * @type {any}
     * @memberof AdminUser
     */
    'type'?: AdminUserTypeEnum;
    /**
     * 
     * @type {any}
     * @memberof AdminUser
     */
    'roles'?: any;
}

export const AdminUserTypeEnum = {
    Normal: 'normal',
    Server: 'server',
    System: 'system',
    Unknown: 'unknown'
} as const;

export type AdminUserTypeEnum = typeof AdminUserTypeEnum[keyof typeof AdminUserTypeEnum];

/**
 * 
 * @export
 * @interface AdminUserData
 */
export interface AdminUserData {
    /**
     * 
     * @type {any}
     * @memberof AdminUserData
     */
    'email'?: any;
    /**
     * 
     * @type {any}
     * @memberof AdminUserData
     */
    'name'?: any;
}
/**
 * 
 * @export
 * @interface AdminValidateDocuments200Response
 */
export interface AdminValidateDocuments200Response {
    /**
     * 
     * @type {any}
     * @memberof AdminValidateDocuments200Response
     */
    'errors'?: any;
    /**
     * The total number of documents that were sampled.
     * @type {any}
     * @memberof AdminValidateDocuments200Response
     */
    'total_processed_count'?: any;
    /**
     * The total number of documents that failed any validation.
     * @type {any}
     * @memberof AdminValidateDocuments200Response
     */
    'total_error_count'?: any;
}
/**
 * 
 * @export
 * @interface AdminValidateDocumentsRequest
 */
export interface AdminValidateDocumentsRequest {
    /**
     * The name of the database that contains the collection to validate.
     * @type {any}
     * @memberof AdminValidateDocumentsRequest
     */
    'database_name': any;
    /**
     * The name of the collection to validate.
     * @type {any}
     * @memberof AdminValidateDocumentsRequest
     */
    'collection_name': any;
    /**
     * The EJSON schema to validate sampled documents against.
     * @type {any}
     * @memberof AdminValidateDocumentsRequest
     */
    'from_schema': any;
    /**
     * A [MongoDB query](https://www.mongodb.com/docs/manual/tutorial/query-documents/) that matches documents in the collection. The result of running this query is the sample population. Use this to narrow the sample to a subset of documents in the collection.
     * @type {any}
     * @memberof AdminValidateDocumentsRequest
     */
    'query'?: any;
    /**
     * The maximum number of documents to sample.
     * @type {any}
     * @memberof AdminValidateDocumentsRequest
     */
    'limit'?: any;
    /**
     * A [MongoDB sort](https://www.mongodb.com/docs/manual/reference/method/cursor.sort/) for the collection. Use this to determine which end of a range query to start sampling from.
     * @type {any}
     * @memberof AdminValidateDocumentsRequest
     */
    'sort'?: any;
}
/**
 * 
 * @export
 * @interface AdminVerifyUserAccessTokenRequest
 */
export interface AdminVerifyUserAccessTokenRequest {
    /**
     * 
     * @type {any}
     * @memberof AdminVerifyUserAccessTokenRequest
     */
    'token': any;
}
/**
 * 
 * @export
 * @interface AllowedIPAccessListCreate201Response
 */
export interface AllowedIPAccessListCreate201Response {
    /**
     * ObjectID
     * @type {any}
     * @memberof AllowedIPAccessListCreate201Response
     */
    '_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof AllowedIPAccessListCreate201Response
     */
    'address'?: any;
    /**
     * net.IP
     * @type {any}
     * @memberof AllowedIPAccessListCreate201Response
     */
    'ip'?: any;
    /**
     * net.IPNet
     * @type {any}
     * @memberof AllowedIPAccessListCreate201Response
     */
    'network'?: any;
    /**
     * 
     * @type {any}
     * @memberof AllowedIPAccessListCreate201Response
     */
    'comment'?: any;
}
/**
 * 
 * @export
 * @interface AllowedIPAccessListCreateRequest
 */
export interface AllowedIPAccessListCreateRequest {
    /**
     * The value of the IP address or CIDR block.
     * @type {any}
     * @memberof AllowedIPAccessListCreateRequest
     */
    'address': any;
    /**
     * An optional comment included in the Access List entry.
     * @type {any}
     * @memberof AllowedIPAccessListCreateRequest
     */
    'comment'?: any;
}
/**
 * 
 * @export
 * @interface AllowedIPAccessListUpdateRequest
 */
export interface AllowedIPAccessListUpdateRequest {
    /**
     * The modified value of the IP address or CIDR block.
     * @type {any}
     * @memberof AllowedIPAccessListUpdateRequest
     */
    'address': any;
    /**
     * An optional comment included in the Access List entry.
     * @type {any}
     * @memberof AllowedIPAccessListUpdateRequest
     */
    'comment'?: any;
}
/**
 * 
 * @export
 * @interface ApiKey
 */
export interface ApiKey {
    /**
     * 
     * @type {any}
     * @memberof ApiKey
     */
    '_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof ApiKey
     */
    'key'?: any;
    /**
     * 
     * @type {any}
     * @memberof ApiKey
     */
    'name'?: any;
    /**
     * 
     * @type {any}
     * @memberof ApiKey
     */
    'disabled'?: any;
}
/**
 * 
 * @export
 * @interface ApiKeyResponse
 */
export interface ApiKeyResponse {
    /**
     * 
     * @type {any}
     * @memberof ApiKeyResponse
     */
    '_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof ApiKeyResponse
     */
    'name'?: any;
    /**
     * 
     * @type {any}
     * @memberof ApiKeyResponse
     */
    'disabled'?: any;
}
/**
 * 
 * @export
 * @interface App
 */
export interface App {
    /**
     * The name of the application. Must begin with a letter and may only contain ASCII letters, numbers, underscores, and hyphens.
     * @type {any}
     * @memberof App
     */
    'name'?: any;
    /**
     * 
     * @type {any}
     * @memberof App
     */
    'provider_region'?: any;
    /**
     * The application\'s physical deployment location. This should agree with the more specific `provider_region` value. For example, an App with a `provider_region` of `aws-us-west-2` maps to a `location` of `US-OR`.
     * @type {DeploymentLocation}
     * @memberof App
     */
    'location'?: DeploymentLocation;
    /**
     * 
     * @type {DeploymentModel}
     * @memberof App
     */
    'deployment_model'?: DeploymentModel;
    /**
     * 
     * @type {AppEnvironment}
     * @memberof App
     */
    'environment'?: AppEnvironment;
}


/**
 * 
 * @export
 * @interface AppDeploymentSettings
 */
export interface AppDeploymentSettings {
    /**
     * 
     * @type {DeploymentModel}
     * @memberof AppDeploymentSettings
     */
    'deployment_model'?: DeploymentModel;
    /**
     * 
     * @type {any}
     * @memberof AppDeploymentSettings
     */
    'provider_region'?: any;
}


/**
 * The application\'s environment. An empty string indicates that the app does not have a specified environment.
 * @export
 * @interface AppEnvironment
 */
export interface AppEnvironment {
}
/**
 * 
 * @export
 * @interface AssetMetadata
 */
export interface AssetMetadata {
    /**
     * The resource path of the asset
     * @type {any}
     * @memberof AssetMetadata
     */
    'path'?: any;
    /**
     * The size of the asset in bytes
     * @type {any}
     * @memberof AssetMetadata
     */
    'size'?: any;
    /**
     * An array of documents that each describe a [metadata attribute](https://www.mongodb.com/docs/realm/hosting/file-metadata-attributes) that applies to the asset.
     * @type {any}
     * @memberof AssetMetadata
     */
    'attrs'?: any;
    /**
     * The MD5 checksum hash for the asset
     * @type {any}
     * @memberof AssetMetadata
     */
    'hash'?: any;
}
/**
 * 
 * @export
 * @interface AtlasCluster
 */
export interface AtlasCluster {
    /**
     * 
     * @type {any}
     * @memberof AtlasCluster
     */
    'name'?: AtlasClusterNameEnum;
    /**
     * 
     * @type {any}
     * @memberof AtlasCluster
     */
    'type'?: AtlasClusterTypeEnum;
    /**
     * 
     * @type {AtlasClusterConfig}
     * @memberof AtlasCluster
     */
    'config'?: AtlasClusterConfig;
}

export const AtlasClusterNameEnum = {
    MongodbAtlas: 'mongodb-atlas'
} as const;

export type AtlasClusterNameEnum = typeof AtlasClusterNameEnum[keyof typeof AtlasClusterNameEnum];
export const AtlasClusterTypeEnum = {
    MongodbAtlas: 'mongodb-atlas'
} as const;

export type AtlasClusterTypeEnum = typeof AtlasClusterTypeEnum[keyof typeof AtlasClusterTypeEnum];

/**
 * 
 * @export
 * @interface AtlasClusterConfig
 */
export interface AtlasClusterConfig {
    /**
     * The service name used to refer to the data source within this Atlas app. The name may be at most 64 characters long and must only contain ASCII letters, numbers, underscores, and hyphens.
     * @type {any}
     * @memberof AtlasClusterConfig
     */
    'clusterName': any;
    /**
     * The [read preference](https://www.mongodb.com/docs/atlas/app-services/mongodb/read-preference/) mode for read requests to the data source.
     * @type {any}
     * @memberof AtlasClusterConfig
     */
    'readPreference'?: AtlasClusterConfigReadPreferenceEnum;
    /**
     * If true, clients may [connect to the app over the MongoDB Wire Protocol](https://www.mongodb.com/docs/atlas/app-services/mongodb/wire-protocol/#connect-over-the-wire-protocol).
     * @type {any}
     * @memberof AtlasClusterConfig
     */
    'wireProtocolEnabled'?: any;
}

export const AtlasClusterConfigReadPreferenceEnum = {
    Primary: 'primary',
    PrimaryPreferred: 'primaryPreferred',
    Secondary: 'secondary',
    SecondaryPreferred: 'secondaryPreferred',
    Nearest: 'nearest'
} as const;

export type AtlasClusterConfigReadPreferenceEnum = typeof AtlasClusterConfigReadPreferenceEnum[keyof typeof AtlasClusterConfigReadPreferenceEnum];

/**
 * 
 * @export
 * @interface AtlasFederatedInstance
 */
export interface AtlasFederatedInstance {
    /**
     * 
     * @type {any}
     * @memberof AtlasFederatedInstance
     */
    'name'?: AtlasFederatedInstanceNameEnum;
    /**
     * 
     * @type {any}
     * @memberof AtlasFederatedInstance
     */
    'type'?: AtlasFederatedInstanceTypeEnum;
    /**
     * 
     * @type {AtlasFederatedInstanceConfig}
     * @memberof AtlasFederatedInstance
     */
    'config'?: AtlasFederatedInstanceConfig;
}

export const AtlasFederatedInstanceNameEnum = {
    MongodbDatafederation: 'mongodb-datafederation'
} as const;

export type AtlasFederatedInstanceNameEnum = typeof AtlasFederatedInstanceNameEnum[keyof typeof AtlasFederatedInstanceNameEnum];
export const AtlasFederatedInstanceTypeEnum = {
    Datalake: 'datalake'
} as const;

export type AtlasFederatedInstanceTypeEnum = typeof AtlasFederatedInstanceTypeEnum[keyof typeof AtlasFederatedInstanceTypeEnum];

/**
 * 
 * @export
 * @interface AtlasFederatedInstanceConfig
 */
export interface AtlasFederatedInstanceConfig {
    /**
     * The service name used to refer to the Federated database instance within this Atlas app. The name may be at most 64 characters long and must only contain ASCII letters, numbers, underscores, and hyphens.
     * @type {any}
     * @memberof AtlasFederatedInstanceConfig
     */
    'dataLakeName': any;
}
/**
 * 
 * @export
 * @interface AwsDeploymentRegion
 */
export interface AwsDeploymentRegion {
}
/**
 * 
 * @export
 * @interface AzureDeploymentRegion
 */
export interface AzureDeploymentRegion {
}
/**
 * 
 * @export
 * @interface BaseAuthProvider
 */
export interface BaseAuthProvider {
    /**
     * The authentication provider\'s unique ID.
     * @type {any}
     * @memberof BaseAuthProvider
     */
    '_id'?: any;
    /**
     * The name of the authentication provider. This value must be the same as the value of `type`.
     * @type {any}
     * @memberof BaseAuthProvider
     */
    'name': any;
    /**
     * 
     * @type {ProviderType}
     * @memberof BaseAuthProvider
     */
    'type': ProviderType;
    /**
     * If `true`, the auth provider is disabled. Users cannot log in through the provider until it is enabled.
     * @type {any}
     * @memberof BaseAuthProvider
     */
    'disabled'?: any;
}


/**
 * Common fields shared by all log types.
 * @export
 * @interface BaseLog
 */
export interface BaseLog {
    /**
     * A unique ID for the log entry. 
     * @type {any}
     * @memberof BaseLog
     */
    '_id'?: any;
    /**
     * A correlation ID for the request that issued the logged operation. 
     * @type {any}
     * @memberof BaseLog
     */
    'co_id'?: any;
    /**
     * The domain ID. 
     * @type {any}
     * @memberof BaseLog
     */
    'domain_id'?: any;
    /**
     * The App\'s internal client ID value. 
     * @type {any}
     * @memberof BaseLog
     */
    'app_id'?: any;
    /**
     * The App\'s Atlas Project ID value. 
     * @type {any}
     * @memberof BaseLog
     */
    'group_id'?: any;
    /**
     * The URL that the incoming request was sent to. 
     * @type {any}
     * @memberof BaseLog
     */
    'request_url'?: any;
    /**
     * The HTTP method used by the incoming request. 
     * @type {any}
     * @memberof BaseLog
     */
    'request_method'?: any;
    /**
     * An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp for the start of the logged operation. 
     * @type {any}
     * @memberof BaseLog
     */
    'started'?: any;
    /**
     * An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp for the completion of the logged operation. 
     * @type {any}
     * @memberof BaseLog
     */
    'completed'?: any;
}
/**
 * 
 * @export
 * @interface BaseTrigger
 */
export interface BaseTrigger {
    /**
     * The trigger\'s unique ID.
     * @type {any}
     * @memberof BaseTrigger
     */
    '_id'?: any;
    /**
     * The trigger\'s name.
     * @type {any}
     * @memberof BaseTrigger
     */
    'name': any;
    /**
     * 
     * @type {any}
     * @memberof BaseTrigger
     */
    'type': any;
    /**
     * If `true`, the trigger is disabled and does not listen for events or execute.
     * @type {any}
     * @memberof BaseTrigger
     */
    'disabled'?: any;
    /**
     * An object that defines configuration values for the trigger.
     * @type {any}
     * @memberof BaseTrigger
     */
    'config': any;
    /**
     * The ID of the function that the trigger calls when it fires.  This value is the same as `event_processors.FUNCTION.function_id`. You can either define the value here or in `event_processors.FUNCTION.function_id`. The App Services backend duplicates the value to the configuration location where you did not define it.  For example, if you define `function_id`, the backend duplicates it to `event_processors.FUNCTION.function_id`.
     * @type {any}
     * @memberof BaseTrigger
     */
    'function_id'?: any;
    /**
     * The name of the function that the trigger calls when it fires, i.e. the function described by `function_id`.  This value is the same as `event_processors.FUNCTION.function_name`. You can either define the value here or in `event_processors.FUNCTION.function_name`. The App Services backend duplicates the value to the configuration location where you did not define it.  For example, if you define `function_name`, the backend duplicates it to `event_processors.FUNCTION.function_name`.
     * @type {any}
     * @memberof BaseTrigger
     */
    'function_name'?: any;
    /**
     * 
     * @type {BaseTriggerEventProcessors}
     * @memberof BaseTrigger
     */
    'event_processors'?: BaseTriggerEventProcessors;
}
/**
 * An object where each field name is an event processor ID and each value is an object that configures its corresponding event processor. For an example configuration object, see [Send Trigger Events to AWS EventBridge](https://www.mongodb.com/docs/realm/triggers/examples/send-events-aws-eventbridge#std-label-event_processor_example).
 * @export
 * @interface BaseTriggerEventProcessors
 */
export interface BaseTriggerEventProcessors {
    /**
     * 
     * @type {BaseTriggerEventProcessorsFUNCTION}
     * @memberof BaseTriggerEventProcessors
     */
    'FUNCTION'?: BaseTriggerEventProcessorsFUNCTION;
    /**
     * 
     * @type {BaseTriggerEventProcessorsAWSEVENTBRIDGE}
     * @memberof BaseTriggerEventProcessors
     */
    'AWS_EVENTBRIDGE'?: BaseTriggerEventProcessorsAWSEVENTBRIDGE;
}
/**
 * 
 * @export
 * @interface BaseTriggerEventProcessorsAWSEVENTBRIDGE
 */
export interface BaseTriggerEventProcessorsAWSEVENTBRIDGE {
    /**
     * 
     * @type {BaseTriggerEventProcessorsAWSEVENTBRIDGEConfig}
     * @memberof BaseTriggerEventProcessorsAWSEVENTBRIDGE
     */
    'config'?: BaseTriggerEventProcessorsAWSEVENTBRIDGEConfig;
}
/**
 * 
 * @export
 * @interface BaseTriggerEventProcessorsAWSEVENTBRIDGEConfig
 */
export interface BaseTriggerEventProcessorsAWSEVENTBRIDGEConfig {
    /**
     * An AWS Account ID.
     * @type {any}
     * @memberof BaseTriggerEventProcessorsAWSEVENTBRIDGEConfig
     */
    'account_id'?: any;
    /**
     * An AWS region.
     * @type {any}
     * @memberof BaseTriggerEventProcessorsAWSEVENTBRIDGEConfig
     */
    'region'?: any;
    /**
     * If `true`, event objects are serialized using EJSON.
     * @type {any}
     * @memberof BaseTriggerEventProcessorsAWSEVENTBRIDGEConfig
     */
    'extended_json_enabled'?: any;
}
/**
 * 
 * @export
 * @interface BaseTriggerEventProcessorsFUNCTION
 */
export interface BaseTriggerEventProcessorsFUNCTION {
    /**
     * 
     * @type {BaseTriggerEventProcessorsFUNCTIONConfig}
     * @memberof BaseTriggerEventProcessorsFUNCTION
     */
    'config'?: BaseTriggerEventProcessorsFUNCTIONConfig;
}
/**
 * 
 * @export
 * @interface BaseTriggerEventProcessorsFUNCTIONConfig
 */
export interface BaseTriggerEventProcessorsFUNCTIONConfig {
    /**
     * The ID of the function that the trigger calls when it fires.  This value is the same as the root-level `function_id`. You can either define the value here or in `function_id`. The App Services backend duplicates the value to the configuration location where you did not define it.  For example, if you define `event_processors.FUNCTION.function_id`, the backend duplicates it to `function_id`.
     * @type {any}
     * @memberof BaseTriggerEventProcessorsFUNCTIONConfig
     */
    'function_id'?: any;
    /**
     * The name of the function that the trigger calls when it fires, i.e. the function described by `function_id`.  This value is the same as the root-level `function_name`. You can either define the value here or in `function_name`. The App Services backend duplicates the value to the configuration location where you did not define it.  For example, if you define `event_processors.FUNCTION.function_name`, the backend duplicates it to `function_name`.
     * @type {any}
     * @memberof BaseTriggerEventProcessorsFUNCTIONConfig
     */
    'function_name'?: any;
}
/**
 * 
 * @export
 * @interface BasicError
 */
export interface BasicError {
    /**
     * 
     * @type {any}
     * @memberof BasicError
     */
    'error'?: any;
}
/**
 * 
 * @export
 * @interface BilledMemory
 */
export interface BilledMemory {
    /**
     * The total billable memory used by the request. 
     * @type {any}
     * @memberof BilledMemory
     */
    'mem_time_usage'?: any;
}
/**
 * 
 * @export
 * @interface BuildInfo
 */
export interface BuildInfo {
    /**
     * Human-readable version information about the mongod instance. This string will take the format `<major>.<minor>.<patch>`.
     * @type {any}
     * @memberof BuildInfo
     */
    'version'?: any;
    /**
     * The commit identifier that identifies the state of the code use to build the mongod.
     * @type {any}
     * @memberof BuildInfo
     */
    'gitVersion'?: any;
    /**
     * An array that conveys version information about the mongod instance. See version for a more readable version of this string.
     * @type {any}
     * @memberof BuildInfo
     */
    'versionArray'?: any;
    /**
     * A string that reports the JavaScript engine used in the mongod instance. By default, this is `mozjs` after version `3.2`, and previously `V8`.
     * @type {any}
     * @memberof BuildInfo
     */
    'javascriptEngine'?: any;
    /**
     * A number that reflects the target processor architecture of the mongod binary.
     * @type {any}
     * @memberof BuildInfo
     */
    'bits'?: any;
    /**
     * A boolean that reflects whether or not the `mongod` instance was built with debugging options.
     * @type {any}
     * @memberof BuildInfo
     */
    'debug'?: any;
    /**
     * A number that reports the [Maximum BSON Document Size](https://www.mongodb.com/docs/manual/reference/limits#std-label-limit-bson-document-size)
     * @type {any}
     * @memberof BuildInfo
     */
    'maxBsonObjectSize'?: any;
}
/**
 * 
 * @export
 * @interface ClientLog
 */
export interface ClientLog {
    /**
     * The user account ID of the user that initiated the logged operation. 
     * @type {any}
     * @memberof ClientLog
     */
    'user_id'?: any;
    /**
     * The IP address that the logged operation originated from. 
     * @type {any}
     * @memberof ClientLog
     */
    'remote_ip_address'?: any;
    /**
     * The HTTP status code returned in the operation response. 
     * @type {any}
     * @memberof ClientLog
     */
    'status'?: any;
    /**
     * If a runtime error occurred in the logged operation, this is a message that describes the issue. 
     * @type {any}
     * @memberof ClientLog
     */
    'error'?: any;
    /**
     * If a runtime error occurred in the logged operation, this is the error\'s short code. 
     * @type {any}
     * @memberof ClientLog
     */
    'error_code'?: any;
    /**
     * The name of the platform that the client was running on. 
     * @type {any}
     * @memberof ClientLog
     */
    'platform'?: any;
    /**
     * The version of the platform that the client was running on. 
     * @type {any}
     * @memberof ClientLog
     */
    'platform_version'?: any;
    /**
     * The name of the Realm SDK used to make the request. 
     * @type {any}
     * @memberof ClientLog
     */
    'sdk_name'?: any;
    /**
     * The version number of the Realm SDK used to make the request. 
     * @type {any}
     * @memberof ClientLog
     */
    'sdk_version'?: any;
}
/**
 * 
 * @export
 * @interface CloudProviderRegion
 */
export interface CloudProviderRegion {
    /**
     * 
     * @type {any}
     * @memberof CloudProviderRegion
     */
    'id'?: any;
    /**
     * A descriptive name for the region.
     * @type {any}
     * @memberof CloudProviderRegion
     */
    'name'?: any;
    /**
     * The cloud provider that hosts the region.
     * @type {any}
     * @memberof CloudProviderRegion
     */
    'cloud_provider'?: any;
    /**
     * The country where the region is physically hosted.
     * @type {any}
     * @memberof CloudProviderRegion
     */
    'country'?: any;
    /**
     * The [deployment models](https://www.mongodb.com/docs/atlas/app-services/apps/deployment-models-and-regions/#deployment-models) that this region supports.
     * @type {any}
     * @memberof CloudProviderRegion
     */
    'deployment_models'?: any;
}
/**
 * 
 * @export
 * @interface CustomResolver
 */
export interface CustomResolver {
    /**
     * The custom resolver\'s unique ID.
     * @type {any}
     * @memberof CustomResolver
     */
    '_id': any;
    /**
     * The resolver function\'s unique ID.
     * @type {any}
     * @memberof CustomResolver
     */
    'function_id': any;
    /**
     * The name of the resolver\'s parent type. This can be `\"Query\"`, `\"Mutation\"`, or the name of a generated type if this is a computed property.
     * @type {any}
     * @memberof CustomResolver
     */
    'on_type': any;
    /**
     * The name of the custom resolver field that appears in the GraphQL schema.
     * @type {any}
     * @memberof CustomResolver
     */
    'field_name': any;
    /**
     * The type of the custom resolver\'s `input` parameter. This can be a scalar, the name of an existing generated type, or a custom JSON schema object. If undefined, the resolver does not accept an input.
     * @type {any}
     * @memberof CustomResolver
     */
    'input_type'?: any | null;
    /**
     * The kind of input type the custom resolver uses. This value must agree with the value of `input_type`:  - A scalar input type must use `\"scalar\"` or `\"scalar-list\"` - A generated input type must use `\"generated\"` or `\"generated-list\"` - A custom input type must use `\"custom\"`  If undefined, the resolver does not accept an input.
     * @type {any}
     * @memberof CustomResolver
     */
    'input_type_format'?: CustomResolverInputTypeFormatEnum;
    /**
     * The type of the value returned by the custom resolver. This can be a scalar, the name of an existing generated type, or a custom JSON schema object.  If undefined, the resolver returns a `DefaultPayload` object:  ```graphql type DefaultPayload {   status: String! } ```
     * @type {any}
     * @memberof CustomResolver
     */
    'payload_type'?: any | null;
    /**
     * The kind of payload type the custom resolver uses. This value must agree with the value of `payload_type`:  - A scalar payload type must use `\"scalar\"` or `\"scalar-list\"` - A generated payload type must use `\"generated\"` or `\"generated-list\"` - A custom payload type must use `\"custom\"`  If undefined, the resolver returns a `DefaultPayload` object.
     * @type {any}
     * @memberof CustomResolver
     */
    'payload_type_format'?: CustomResolverPayloadTypeFormatEnum;
}

export const CustomResolverInputTypeFormatEnum = {
    Scalar: 'scalar',
    ScalarList: 'scalar-list',
    Generated: 'generated',
    GeneratedList: 'generated-list',
    Custom: 'custom'
} as const;

export type CustomResolverInputTypeFormatEnum = typeof CustomResolverInputTypeFormatEnum[keyof typeof CustomResolverInputTypeFormatEnum];
export const CustomResolverPayloadTypeFormatEnum = {
    Scalar: 'scalar',
    ScalarList: 'scalar-list',
    Generated: 'generated',
    GeneratedList: 'generated-list',
    Custom: 'custom'
} as const;

export type CustomResolverPayloadTypeFormatEnum = typeof CustomResolverPayloadTypeFormatEnum[keyof typeof CustomResolverPayloadTypeFormatEnum];

/**
 * 
 * @export
 * @interface CustomUserDataConfig
 */
export interface CustomUserDataConfig {
    /**
     * The `_id` value of the linked MongoDB data source that contains custom user data.  See [Get a Data Source](#operation/adminGetService).
     * @type {any}
     * @memberof CustomUserDataConfig
     */
    'mongo_service_id'?: any;
    /**
     * The name of the database that contains custom user data.
     * @type {any}
     * @memberof CustomUserDataConfig
     */
    'database_name'?: any;
    /**
     * The name of the collection that contains custom user data.
     * @type {any}
     * @memberof CustomUserDataConfig
     */
    'collection_name'?: any;
    /**
     * The name of a field that appears in every custom user data document and that contains the user account ID of each document\'s corresponding user.
     * @type {any}
     * @memberof CustomUserDataConfig
     */
    'user_id_field'?: any;
    /**
     * The `_id` value of a [user creation function](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/#std-label-user-creation-function) that runs whenever a new user registers.
     * @type {any}
     * @memberof CustomUserDataConfig
     */
    'on_user_creation_function_id'?: any;
    /**
     * If `true`, custom user data is enabled.
     * @type {any}
     * @memberof CustomUserDataConfig
     */
    'enabled'?: any;
}
/**
 * 
 * @export
 * @interface DataApiConfig
 */
export interface DataApiConfig {
    /**
     * 
     * @type {any}
     * @memberof DataApiConfig
     */
    'disabled'?: any;
    /**
     * 
     * @type {any}
     * @memberof DataApiConfig
     */
    'versions'?: any;
    /**
     * The default [data format](https://mongodb.com/docs/atlas/app-services/data-api/#data-formats) returned by Data API endpoints.
     * @type {EndpointDataFormat}
     * @memberof DataApiConfig
     */
    'return_type'?: EndpointDataFormat;
    /**
     * 
     * @type {any}
     * @memberof DataApiConfig
     */
    'create_user_on_auth'?: any;
    /**
     * An application user\'s account ID. If defined, endpoints will always run as the specified user.
     * @type {any}
     * @memberof DataApiConfig
     */
    'run_as_user_id'?: any;
    /**
     * Stringified source code for a function that returns an application user\'s account ID. If defined, endpoints execute the function on every request and run as the user with the ID returned from the function.
     * @type {any}
     * @memberof DataApiConfig
     */
    'run_as_user_id_script_source'?: any;
    /**
     * 
     * @type {any}
     * @memberof DataApiConfig
     */
    'validation_method'?: DataApiConfigValidationMethodEnum;
    /**
     * If `validation_method` is set to `\"SECRET_AS_QUERY_PARAM\"` or `\"VERIFY_PAYLOAD\"`, this is the `name` of the [Secret](https://www.mongodb.com/docs/atlas/app-services/values-and-secrets/) that authorizes requests.
     * @type {any}
     * @memberof DataApiConfig
     */
    'secret_name'?: any;
    /**
     * A JSON expression that evaluates to `true` if an endpoint is allowed to run in response to an incoming request.
     * @type {any}
     * @memberof DataApiConfig
     */
    'can_evaluate'?: any;
}

export const DataApiConfigValidationMethodEnum = {
    NoValidation: 'NO_VALIDATION',
    SecretAsQueryParam: 'SECRET_AS_QUERY_PARAM',
    VerifyPayload: 'VERIFY_PAYLOAD'
} as const;

export type DataApiConfigValidationMethodEnum = typeof DataApiConfigValidationMethodEnum[keyof typeof DataApiConfigValidationMethodEnum];

/**
 * A supported version of the Data API.
 * @export
 * @interface DataApiVersion
 */
export interface DataApiVersion {
}
/**
 * A data access rule that define defines fallback user roles and query filters for collection\'s that don\'t have more specific permissions defined.
 * @export
 * @interface DefaultRule
 */
export interface DefaultRule {
    /**
     * The default rule\'s unique ObjectId identifier.
     * @type {any}
     * @memberof DefaultRule
     */
    '_id'?: any;
    /**
     * An ordered list of default user roles.
     * @type {any}
     * @memberof DefaultRule
     */
    'roles'?: any;
    /**
     * A list of default [query filters](https://www.mongodb.com/docs/atlas/app-services/reference/config/data_sources/#filters).
     * @type {any}
     * @memberof DefaultRule
     */
    'filters'?: any;
}
/**
 * 
 * @export
 * @interface DependenciesSummary
 */
export interface DependenciesSummary {
    /**
     * The dependency collection\'s unique internal ID.
     * @type {any}
     * @memberof DependenciesSummary
     */
    '_id'?: any;
    /**
     * The application\'s deployment region.
     * @type {any}
     * @memberof DependenciesSummary
     */
    'location'?: any;
    /**
     * The unique `_id` value of the MongoDB Cloud user that uploaded the dependency collection.
     * @type {any}
     * @memberof DependenciesSummary
     */
    'user_id'?: any;
    /**
     * The time at which the dependencies were uploaded in [Unix time](https://en.wikipedia.org/wiki/Unix_time) (number of seconds since January 1, 1970 at 00:00 UTC).
     * @type {any}
     * @memberof DependenciesSummary
     */
    'last_modified'?: any;
    /**
     * An array of documents that each describe a dependency uploaded to the application.
     * @type {any}
     * @memberof DependenciesSummary
     */
    'dependencies_list'?: any;
}
/**
 * 
 * @export
 * @interface Dependency
 */
export interface Dependency {
    /**
     * The name of the uploaded dependency.
     * @type {any}
     * @memberof Dependency
     */
    'name'?: any;
    /**
     * The version of the uploaded dependency.
     * @type {any}
     * @memberof Dependency
     */
    'version'?: any;
}
/**
 * 
 * @export
 * @interface Deployment
 */
export interface Deployment {
    /**
     * The unique ID of the deployment.
     * @type {any}
     * @memberof Deployment
     */
    '_id'?: any;
    /**
     * The name of the deployment. By default, this is the same value as ``_id``.
     * @type {any}
     * @memberof Deployment
     */
    'name'?: any;
    /**
     * The unique `_id` value of the Atlas App Services App.
     * @type {any}
     * @memberof Deployment
     */
    'app_id'?: any;
    /**
     * The unique `_id` value of the deployment draft associated with the deployment, if applicable.
     * @type {any}
     * @memberof Deployment
     */
    'draft_id'?: any;
    /**
     * The unique `_id` value of the MongoDB Cloud user that deployed the draft.
     * @type {any}
     * @memberof Deployment
     */
    'user_id'?: any;
    /**
     * The time at which the deployment was made. Represented as the number of seconds since January 1, 1970.
     * @type {any}
     * @memberof Deployment
     */
    'deployed_at'?: any;
    /**
     * The deployment method used to create the deployment.
     * @type {any}
     * @memberof Deployment
     */
    'origin'?: any;
    /**
     * The commit hash of the deployment (Automatic GitHub Deployment)
     * @type {any}
     * @memberof Deployment
     */
    'commit'?: any;
    /**
     * A message that indicates whether or not the deployment was successful.
     * @type {any}
     * @memberof Deployment
     */
    'status'?: any;
    /**
     * The error message of the error that caused the deployment to fail, if applicable.
     * @type {any}
     * @memberof Deployment
     */
    'status_error_message'?: any;
    /**
     * A link to the diff of changes in the deployment
     * @type {any}
     * @memberof Deployment
     */
    'diff_url'?: any;
    /**
     * 
     * @type {DeploymentLocation}
     * @memberof Deployment
     */
    'remote_location'?: DeploymentLocation;
}


/**
 * A configuration file that controls your app\'s deployment behavior.
 * @export
 * @interface DeploymentConfig
 */
export interface DeploymentConfig {
    /**
     * If `true`, every change made in the Admin UI deploys automatically on save. If `false`, changes are grouped into a deployment draft that you deploy separately.
     * @type {any}
     * @memberof DeploymentConfig
     */
    'ui_drafts_disabled': any;
    /**
     * 
     * @type {DeploymentConfigAutomaticDeployment}
     * @memberof DeploymentConfig
     */
    'automatic_deployment': DeploymentConfigAutomaticDeployment;
    /**
     * The time this configuration was last modified represented by the number of seconds since the UNIX epoch.
     * @type {any}
     * @memberof DeploymentConfig
     */
    'last_modified'?: any;
}
/**
 * Configuration for automatic deployment methods
 * @export
 * @interface DeploymentConfigAutomaticDeployment
 */
export interface DeploymentConfigAutomaticDeployment {
    /**
     * If `true`, the app automatically deploys using the method defined for `provider`.
     * @type {any}
     * @memberof DeploymentConfigAutomaticDeployment
     */
    'enabled'?: any;
    /**
     * The type of automatic deployment.
     * @type {any}
     * @memberof DeploymentConfigAutomaticDeployment
     */
    'provider'?: DeploymentConfigAutomaticDeploymentProviderEnum;
    /**
     * The unique ID values of automatic deployment provider installations. For example, the `id` value of a [GitHub app installation](https://docs.github.com/en/rest/apps/installations).
     * @type {any}
     * @memberof DeploymentConfigAutomaticDeployment
     */
    'installation_ids'?: any;
}

export const DeploymentConfigAutomaticDeploymentProviderEnum = {
    Github: 'github'
} as const;

export type DeploymentConfigAutomaticDeploymentProviderEnum = typeof DeploymentConfigAutomaticDeploymentProviderEnum[keyof typeof DeploymentConfigAutomaticDeploymentProviderEnum];

/**
 * 
 * @export
 * @interface DeploymentDraft
 */
export interface DeploymentDraft {
    /**
     * The unique ID of the draft.
     * @type {any}
     * @memberof DeploymentDraft
     */
    '_id'?: any;
    /**
     * The unique `_id` value of the MongoDB Cloud user that created the draft.
     * @type {any}
     * @memberof DeploymentDraft
     */
    'user_id'?: any;
    /**
     * A specific, existing application.
     * @type {any}
     * @memberof DeploymentDraft
     */
    'app'?: any;
}
/**
 * An identifier of the location where an app server is physically deployed to, regardless of the cloud provider that hosts the app.
 * @export
 * @interface DeploymentLocation
 */
export interface DeploymentLocation {
}
/**
 * 
 * @export
 * @interface DeploymentMigration
 */
export interface DeploymentMigration {
    /**
     * 
     * @type {any}
     * @memberof DeploymentMigration
     */
    'status'?: DeploymentMigrationStatusEnum;
    /**
     * A description of the current migration status.
     * @type {any}
     * @memberof DeploymentMigration
     */
    'message'?: any;
    /**
     * A timestamp of the most recent update to the deployment migration.
     * @type {any}
     * @memberof DeploymentMigration
     */
    'updated_at'?: any;
    /**
     * The App\'s deployment model and cloud provider region at the start of the migration
     * @type {AppDeploymentSettings}
     * @memberof DeploymentMigration
     */
    'from'?: AppDeploymentSettings;
    /**
     * The migration\'s target deployment model and cloud provider region. At the end of a successful migration, the App uses these deployment settings instead of the settings described by `from`.
     * @type {AppDeploymentSettings}
     * @memberof DeploymentMigration
     */
    'to'?: AppDeploymentSettings;
}

export const DeploymentMigrationStatusEnum = {
    Started: 'started',
    Downtime: 'downtime',
    EnablingEventSubscriptions: 'enabling_event_subscriptions',
    Cleanup: 'cleanup',
    Successful: 'successful',
    Failed: 'failed'
} as const;

export type DeploymentMigrationStatusEnum = typeof DeploymentMigrationStatusEnum[keyof typeof DeploymentMigrationStatusEnum];

/**
 * An application [deployment model](https://www.mongodb.com/docs/atlas/app-services/apps/deployment-models-and-regions/#deployment-models).
 * @export
 * @interface DeploymentModel
 */
export interface DeploymentModel {
}
/**
 * 
 * @export
 * @interface Diff
 */
export interface Diff {
    /**
     * A list where each item is the line-by-line diff for a specific configuration file.
     * @type {any}
     * @memberof Diff
     */
    'diffs'?: any;
    /**
     * 
     * @type {DiffHostingFilesDiff}
     * @memberof Diff
     */
    'hosting_files_diff'?: DiffHostingFilesDiff;
}
/**
 * The filenames of hosted files that have been added, removed, or modified.
 * @export
 * @interface DiffHostingFilesDiff
 */
export interface DiffHostingFilesDiff {
    /**
     * 
     * @type {any}
     * @memberof DiffHostingFilesDiff
     */
    'added'?: any;
    /**
     * 
     * @type {any}
     * @memberof DiffHostingFilesDiff
     */
    'deleted'?: any;
    /**
     * 
     * @type {any}
     * @memberof DiffHostingFilesDiff
     */
    'modified'?: any;
}
/**
 * 
 * @export
 * @interface EmailConfirmationAutomatic
 */
export interface EmailConfirmationAutomatic {
    /**
     * If `true`, automatically confirm new user accounts without additional verification.
     * @type {any}
     * @memberof EmailConfirmationAutomatic
     */
    'autoConfirm'?: any;
}
/**
 * 
 * @export
 * @interface EmailConfirmationBuiltIn
 */
export interface EmailConfirmationBuiltIn {
    /**
     * If `true`, automatically confirm new user accounts without additional verification. For built-in email account confirmation, set this value to `false`.
     * @type {any}
     * @memberof EmailConfirmationBuiltIn
     */
    'autoConfirm'?: any;
    /**
     * The URL included in the email sent to new users as part of the built-in confirmation flow. The email also adds a unique confirmation `token` and `tokenId` as query parameters.  This URL should handle user confirmation by passing the confirmation token to a Realm SDK\'s `confirmUser` function or to the Admin API [Confirm a Pending Email/Password User](#tag/email/operation/adminConfirmPendingUser) endpoint.
     * @type {any}
     * @memberof EmailConfirmationBuiltIn
     */
    'emailConfirmationUrl'?: any;
    /**
     * The subject line of the email sent to new users as part of the built-in confirmation flow.
     * @type {any}
     * @memberof EmailConfirmationBuiltIn
     */
    'confirmEmailSubject'?: any;
}
/**
 * 
 * @export
 * @interface EmailConfirmationCustomFunction
 */
export interface EmailConfirmationCustomFunction {
    /**
     * If `true`, automatically confirm new user accounts without additional verification. For custom function account confirmation, set this value to `false`.
     * @type {any}
     * @memberof EmailConfirmationCustomFunction
     */
    'autoConfirm'?: any;
    /**
     * If `true`, new email/password user account registrations use a custom function that you define to handle the confirmation process.
     * @type {any}
     * @memberof EmailConfirmationCustomFunction
     */
    'runConfirmationFunction'?: any;
    /**
     * The name of the custom function that handles the confirmation process.
     * @type {any}
     * @memberof EmailConfirmationCustomFunction
     */
    'confirmationFunctionName'?: any;
}
/**
 * 
 * @export
 * @interface Endpoint
 */
export interface Endpoint {
    /**
     * 
     * @type {any}
     * @memberof Endpoint
     */
    'route'?: any;
    /**
     * 
     * @type {any}
     * @memberof Endpoint
     */
    'http_method'?: EndpointHttpMethodEnum;
    /**
     * 
     * @type {any}
     * @memberof Endpoint
     */
    'function_id': any;
    /**
     * 
     * @type {any}
     * @memberof Endpoint
     */
    'validation_method'?: EndpointValidationMethodEnum;
    /**
     * If `validation_method` is set to `\"SECRET_AS_QUERY_PARAM\"` or `\"VERIFY_PAYLOAD\"`, this is the `_id` of the [Secret](https://www.mongodb.com/docs/atlas/app-services/values-and-secrets/) that authorizes requests.
     * @type {any}
     * @memberof Endpoint
     */
    'secret_id'?: any;
    /**
     * The default [data format](https://mongodb.com/docs/atlas/app-services/data-api/#data-formats) returned by custom HTTPS endpoints.
     * @type {EndpointDataFormat}
     * @memberof Endpoint
     */
    'return_type'?: EndpointDataFormat;
    /**
     * 
     * @type {any}
     * @memberof Endpoint
     */
    'respond_result'?: any;
    /**
     * 
     * @type {any}
     * @memberof Endpoint
     */
    'fetch_custom_user_data'?: any;
    /**
     * 
     * @type {any}
     * @memberof Endpoint
     */
    'create_user_on_auth'?: any;
    /**
     * 
     * @type {any}
     * @memberof Endpoint
     */
    'disabled'?: any;
}

export const EndpointHttpMethodEnum = {
    Get: 'GET',
    Post: 'POST',
    Put: 'PUT',
    Patch: 'PATCH',
    Delete: 'DELETE',
    Star: '*'
} as const;

export type EndpointHttpMethodEnum = typeof EndpointHttpMethodEnum[keyof typeof EndpointHttpMethodEnum];
export const EndpointValidationMethodEnum = {
    NoValidation: 'NO_VALIDATION',
    SecretAsQueryParam: 'SECRET_AS_QUERY_PARAM',
    VerifyPayload: 'VERIFY_PAYLOAD'
} as const;

export type EndpointValidationMethodEnum = typeof EndpointValidationMethodEnum[keyof typeof EndpointValidationMethodEnum];

/**
 * A [data format](https://mongodb.com/docs/atlas/app-services/data-api/#data-formats) supported by the Data API & custom endpoints.
 * @export
 * @interface EndpointDataFormat
 */
export interface EndpointDataFormat {
}
/**
 * 
 * @export
 * @interface EnvironmentValueDescription
 */
export interface EnvironmentValueDescription {
    /**
     * The environment value\'s internal ID
     * @type {any}
     * @memberof EnvironmentValueDescription
     */
    '_id'?: any;
    /**
     * The environment value name
     * @type {any}
     * @memberof EnvironmentValueDescription
     */
    'name'?: any;
    /**
     * The time this configuration was last modified represented by the number of seconds since the UNIX epoch.
     * @type {any}
     * @memberof EnvironmentValueDescription
     */
    'last_modified'?: any;
}
/**
 * Read and write permissions for a field.
 * @export
 * @interface FieldLevelPermissions
 */
export interface FieldLevelPermissions {
    /**
     * A [rule expression](https://mongodb.com/docs/atlas/app-services/rules/expressions/).
     * @type {any}
     * @memberof FieldLevelPermissions
     */
    'read': any | null;
    /**
     * A [rule expression](https://mongodb.com/docs/atlas/app-services/rules/expressions/).
     * @type {any}
     * @memberof FieldLevelPermissions
     */
    'write': any | null;
}
/**
 * A filter that conditionally modifies incoming query operations before they run.
 * @export
 * @interface Filter
 */
export interface Filter {
    /**
     * The filter\'s unique ObjectId identifier.
     * @type {any}
     * @memberof Filter
     */
    '_id'?: any;
    /**
     * The filter\'s name.
     * @type {any}
     * @memberof Filter
     */
    'name'?: any;
    /**
     * A [rule expression](https://mongodb.com/docs/atlas/app-services/rules/expressions/).
     * @type {any}
     * @memberof Filter
     */
    'apply_when'?: any | null;
    /**
     * A MongoDB query object.
     * @type {any}
     * @memberof Filter
     */
    'query'?: any;
    /**
     * A MongoDB projection object.
     * @type {{ [key: string]: any; }}
     * @memberof Filter
     */
    'projection'?: { [key: string]: any; };
}
/**
 * 
 * @export
 * @interface Function
 */
export interface Function {
    /**
     * 
     * @type {any}
     * @memberof Function
     */
    '_id'?: any;
    /**
     * A JSON expression that evaluates to `true` if the Function is allowed to run in response to an incoming request.
     * @type {any}
     * @memberof Function
     */
    'can_evaluate'?: any;
    /**
     * A unique name for the Function.
     * @type {any}
     * @memberof Function
     */
    'name'?: any;
    /**
     * If `true`, the function is hidden from client applications. You can still call a private function from JSON expressions and other functions, including incoming webhooks and triggers.
     * @type {any}
     * @memberof Function
     */
    'private'?: any;
    /**
     * The stringified source code for the function. The code must be valid ES6.
     * @type {any}
     * @memberof Function
     */
    'source'?: any;
}
/**
 * 
 * @export
 * @interface FunctionCall
 */
export interface FunctionCall {
    /**
     * The global region where the function was executed. 
     * @type {any}
     * @memberof FunctionCall
     */
    'function_call_location'?: any;
    /**
     * The cloud provider deployment region where the function was executed. 
     * @type {any}
     * @memberof FunctionCall
     */
    'function_call_provider_region'?: any;
    /**
     * 
     * @type {any}
     * @memberof FunctionCall
     */
    'function_call'?: any;
    /**
     * 
     * @type {any}
     * @memberof FunctionCall
     */
    'function_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof FunctionCall
     */
    'function_name'?: any;
}
/**
 * 
 * @export
 * @interface GcpDeploymentRegion
 */
export interface GcpDeploymentRegion {
}
/**
 * 
 * @export
 * @interface GraphQLConfig
 */
export interface GraphQLConfig {
    /**
     * If `true`, generated schema type names use common English pluralization whenever possible.  If `false`, or if a natural pluralization cannot be determined, then plural types use the singular type name with an `\"s\"` appended to the end.  **You cannot change this value after you create your App. This value is `true` for all new Apps.**
     * @type {any}
     * @memberof GraphQLConfig
     */
    'use_natural_pluralization'?: any;
    /**
     * If `true`, the GraphQL API blocks [introspection queries](https://graphql.org/learn/introspection/) from clients.
     * @type {any}
     * @memberof GraphQLConfig
     */
    'disable_schema_introspection'?: any;
}
/**
 * 
 * @export
 * @interface GraphQLValidationAction
 */
export interface GraphQLValidationAction {
}
/**
 * 
 * @export
 * @interface GraphQLValidationLevel
 */
export interface GraphQLValidationLevel {
}
/**
 * 
 * @export
 * @interface GraphQLValidationSettings
 */
export interface GraphQLValidationSettings {
    /**
     * 
     * @type {GraphQLValidationAction}
     * @memberof GraphQLValidationSettings
     */
    'read_validation_action'?: GraphQLValidationAction;
    /**
     * 
     * @type {GraphQLValidationLevel}
     * @memberof GraphQLValidationSettings
     */
    'read_validation_level'?: GraphQLValidationLevel;
    /**
     * 
     * @type {GraphQLValidationAction}
     * @memberof GraphQLValidationSettings
     */
    'write_validation_action'?: GraphQLValidationAction;
    /**
     * 
     * @type {GraphQLValidationLevel}
     * @memberof GraphQLValidationSettings
     */
    'write_validation_level'?: GraphQLValidationLevel;
}


/**
 * 
 * @export
 * @interface HostedAssetMetadata
 */
export interface HostedAssetMetadata {
    /**
     * The unique App ID of the Atlas App Services App that is hosting the file.
     * @type {any}
     * @memberof HostedAssetMetadata
     */
    'appId'?: any;
    /**
     * The time at which the hosted asset was last modified in [Unix time](https://en.wikipedia.org/wiki/Unix_time) (number of seconds since January 1, 1970 at 00:00 UTC).
     * @type {any}
     * @memberof HostedAssetMetadata
     */
    'last_modified'?: any;
    /**
     * The full URL of the hosted asset.
     * @type {any}
     * @memberof HostedAssetMetadata
     */
    'url'?: any;
    /**
     * The resource path of the hosted asset
     * @type {any}
     * @memberof HostedAssetMetadata
     */
    'path'?: any;
    /**
     * The size of the hosted asset in bytes
     * @type {any}
     * @memberof HostedAssetMetadata
     */
    'size'?: any;
    /**
     * An array of documents that each describe a [metadata attribute](https://www.mongodb.com/docs/realm/hosting/file-metadata-attributes) that applies to the asset.
     * @type {any}
     * @memberof HostedAssetMetadata
     */
    'attrs'?: any;
    /**
     * The MD5 checksum hash for the hosted asset
     * @type {any}
     * @memberof HostedAssetMetadata
     */
    'hash'?: any;
}
/**
 * 
 * @export
 * @interface HostingConfiguration
 */
export interface HostingConfiguration {
    /**
     * 
     * @type {any}
     * @memberof HostingConfiguration
     */
    'enabled'?: any;
    /**
     * 
     * @type {any}
     * @memberof HostingConfiguration
     */
    'status'?: HostingConfigurationStatusEnum;
    /**
     * 
     * @type {HostingConfigurationDefaultDomain}
     * @memberof HostingConfiguration
     */
    'default_domain'?: HostingConfigurationDefaultDomain;
}

export const HostingConfigurationStatusEnum = {
    SetupOk: 'setup_ok',
    ChangeInProgress: 'change_in_progress',
    ChangeFailed: 'change_failed',
    ChangeFailedFatal: 'change_failed_fatal'
} as const;

export type HostingConfigurationStatusEnum = typeof HostingConfigurationStatusEnum[keyof typeof HostingConfigurationStatusEnum];

/**
 * 
 * @export
 * @interface HostingConfigurationDefaultDomain
 */
export interface HostingConfigurationDefaultDomain {
    /**
     * 
     * @type {any}
     * @memberof HostingConfigurationDefaultDomain
     */
    'provider_type'?: any;
    /**
     * 
     * @type {HostingConfigurationDefaultDomainConfig}
     * @memberof HostingConfigurationDefaultDomain
     */
    'config'?: HostingConfigurationDefaultDomainConfig;
}
/**
 * 
 * @export
 * @interface HostingConfigurationDefaultDomainConfig
 */
export interface HostingConfigurationDefaultDomainConfig {
    /**
     * Default domain of hosted Atlas App Services App provided by App Services.
     * @type {any}
     * @memberof HostingConfigurationDefaultDomainConfig
     */
    'app_default_domain'?: any;
}
/**
 * 
 * @export
 * @interface LogForwarder
 */
export interface LogForwarder {
    /**
     * 
     * @type {any}
     * @memberof LogForwarder
     */
    '_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof LogForwarder
     */
    'name'?: any;
    /**
     * 
     * @type {any}
     * @memberof LogForwarder
     */
    'disabled'?: any;
    /**
     * 
     * @type {any}
     * @memberof LogForwarder
     */
    'log_types'?: any;
    /**
     * 
     * @type {any}
     * @memberof LogForwarder
     */
    'log_statuses'?: any;
    /**
     * 
     * @type {LogForwardingPolicy}
     * @memberof LogForwarder
     */
    'policy'?: LogForwardingPolicy;
    /**
     * 
     * @type {LogForwardingAction}
     * @memberof LogForwarder
     */
    'action'?: LogForwardingAction;
}
/**
 * 
 * @export
 * @interface LogForwardingAction
 */
export interface LogForwardingAction {
    /**
     * 
     * @type {any}
     * @memberof LogForwardingAction
     */
    'type'?: LogForwardingActionTypeEnum;
    /**
     * 
     * @type {any}
     * @memberof LogForwardingAction
     */
    'name'?: any;
    /**
     * 
     * @type {any}
     * @memberof LogForwardingAction
     */
    'data_source'?: any;
    /**
     * 
     * @type {any}
     * @memberof LogForwardingAction
     */
    'database'?: any;
    /**
     * 
     * @type {any}
     * @memberof LogForwardingAction
     */
    'collection'?: any;
}

export const LogForwardingActionTypeEnum = {
    Collection: 'collection',
    Function: 'function'
} as const;

export type LogForwardingActionTypeEnum = typeof LogForwardingActionTypeEnum[keyof typeof LogForwardingActionTypeEnum];

/**
 * 
 * @export
 * @interface LogForwardingPolicy
 */
export interface LogForwardingPolicy {
    /**
     * 
     * @type {any}
     * @memberof LogForwardingPolicy
     */
    'type'?: LogForwardingPolicyTypeEnum;
}

export const LogForwardingPolicyTypeEnum = {
    Single: 'single',
    Batch: 'batch'
} as const;

export type LogForwardingPolicyTypeEnum = typeof LogForwardingPolicyTypeEnum[keyof typeof LogForwardingPolicyTypeEnum];

/**
 * 
 * @export
 * @interface LogStatus
 */
export interface LogStatus {
}
/**
 * 
 * @export
 * @interface LogType
 */
export interface LogType {
}
/**
 * 
 * @export
 * @interface Message
 */
export interface Message {
    /**
     * 
     * @type {any}
     * @memberof Message
     */
    'allowed_ips'?: any;
    /**
     * 
     * @type {any}
     * @memberof Message
     */
    'appID'?: any;
    /**
     * 
     * @type {any}
     * @memberof Message
     */
    'label'?: any;
    /**
     * 
     * @type {any}
     * @memberof Message
     */
    'message'?: any;
    /**
     * 
     * @type {any}
     * @memberof Message
     */
    'topic'?: any;
    /**
     * 
     * @type {any}
     * @memberof Message
     */
    'created'?: any;
    /**
     * 
     * @type {any}
     * @memberof Message
     */
    'sent'?: any;
    /**
     * 
     * @type {MessageState}
     * @memberof Message
     */
    'state'?: MessageState;
}


/**
 * 
 * @export
 * @interface MessageState
 */
export interface MessageState {
}
/**
 * 
 * @export
 * @interface Messages
 */
export interface Messages {
    /**
     * A list of logs or other messages associated with the operation. 
     * @type {any}
     * @memberof Messages
     */
    'messages'?: any;
}
/**
 * 
 * @export
 * @interface MetadataAttribute
 */
export interface MetadataAttribute {
    /**
     * The [metadata attribute](https://www.mongodb.com/docs/realm/hosting/file-metadata-attributes) name.
     * @type {any}
     * @memberof MetadataAttribute
     */
    'name'?: any;
    /**
     * The [metadata attribute](https://www.mongodb.com/docs/realm/hosting/file-metadata-attributes) value.
     * @type {any}
     * @memberof MetadataAttribute
     */
    'value'?: any;
}
/**
 * 
 * @export
 * @interface ModelError
 */
export interface ModelError {
    /**
     * A message that describes the error.
     * @type {any}
     * @memberof ModelError
     */
    'error'?: any;
    /**
     * The error type.
     * @type {any}
     * @memberof ModelError
     */
    'error_code'?: any;
}
/**
 * 
 * @export
 * @interface NewFunction
 */
export interface NewFunction {
    /**
     * A JSON expression that evaluates to `true` if the Function is allowed to run in response to an incoming request.
     * @type {any}
     * @memberof NewFunction
     */
    'can_evaluate'?: any;
    /**
     * A unique name for the Function.
     * @type {any}
     * @memberof NewFunction
     */
    'name': any;
    /**
     * If `true`, the function is hidden from client applications. You can still call a private function from JSON expressions and other functions, including incoming webhooks and triggers.
     * @type {any}
     * @memberof NewFunction
     */
    'private': any;
    /**
     * The stringified source code for the function. The code must be valid ES6.
     * @type {any}
     * @memberof NewFunction
     */
    'source': any;
    /**
     * If `true`, the function executes with full privileges, bypassing rules on all services.
     * @type {any}
     * @memberof NewFunction
     */
    'run_as_system': any;
    /**
     * An application user\'s account ID. If defined, endpoints will always  run as the specified user. Cannot be used with  `run_as_user_id_script_source`.
     * @type {any}
     * @memberof NewFunction
     */
    'run_as_user_id'?: any;
    /**
     * The stringified source code for a  [function](https://www.mongodb.com/docs/atlas/app-services/functions/#std-label-functions) that returns an application user\'s account ID. If defined, endpoints  execute the function on every request and run as the user with the  ID returned from the function. Cannot be used with `run_as_user_id`.
     * @type {any}
     * @memberof NewFunction
     */
    'run_as_user_id_script_source'?: any;
}
/**
 * 
 * @export
 * @interface NewMessage
 */
export interface NewMessage {
    /**
     * 
     * @type {any}
     * @memberof NewMessage
     */
    'label': any;
    /**
     * 
     * @type {any}
     * @memberof NewMessage
     */
    'message': any;
    /**
     * 
     * @type {any}
     * @memberof NewMessage
     */
    'topic': any;
    /**
     * 
     * @type {MessageState}
     * @memberof NewMessage
     */
    'state': MessageState;
}


/**
 * 
 * @export
 * @interface NewValue
 */
export interface NewValue {
    /**
     * 
     * @type {any}
     * @memberof NewValue
     */
    'name': any;
    /**
     * 
     * @type {any}
     * @memberof NewValue
     */
    'private': any;
    /**
     * 
     * @type {any}
     * @memberof NewValue
     */
    'value': any;
}
/**
 * 
 * @export
 * @interface NullTypeSchemaValidationSetting
 */
export interface NullTypeSchemaValidationSetting {
    /**
     * 
     * @type {any}
     * @memberof NullTypeSchemaValidationSetting
     */
    'enabled'?: any;
}
/**
 * 
 * @export
 * @interface Partition
 */
export interface Partition {
    /**
     * 
     * @type {any}
     * @memberof Partition
     */
    'key'?: any;
    /**
     * 
     * @type {any}
     * @memberof Partition
     */
    'type'?: any;
}
/**
 * 
 * @export
 * @interface PasswordRefreshBuiltIn
 */
export interface PasswordRefreshBuiltIn {
    /**
     * The URL included in the email sent to users as part of the built-in password reset flow. The email also adds a unique password reset `token` and `tokenId` as query parameters.  This URL should handle user confirmation by passing the password reset token to a Realm SDK\'s `resetPassword` function.
     * @type {any}
     * @memberof PasswordRefreshBuiltIn
     */
    'resetPasswordUrl'?: any;
    /**
     * The subject line of the email sent to users as part of the built-in password reset flow.
     * @type {any}
     * @memberof PasswordRefreshBuiltIn
     */
    'resetPasswordSubject'?: any;
}
/**
 * 
 * @export
 * @interface PasswordRefreshCustomFunction
 */
export interface PasswordRefreshCustomFunction {
    /**
     * If `true`, use a custom function that you define to handle the password reset process.
     * @type {any}
     * @memberof PasswordRefreshCustomFunction
     */
    'runResetFunction'?: any;
    /**
     * The name of the custom function that handles the password reset process.
     * @type {any}
     * @memberof PasswordRefreshCustomFunction
     */
    'resetFunctionName'?: any;
}
/**
 * 
 * @export
 * @interface PbsSyncResponse
 */
export interface PbsSyncResponse {
    /**
     * The Service ID for the currently synced cluster, if there is one.
     * @type {any}
     * @memberof PbsSyncResponse
     */
    'service_id'?: any;
    /**
     * A list of valid partition keys based on the cluster\'s collection schemas.
     * @type {any}
     * @memberof PbsSyncResponse
     */
    'partition_fields'?: any;
}
/**
 * 
 * @export
 * @interface PrivateEndpoint
 */
export interface PrivateEndpoint {
    /**
     * 
     * @type {any}
     * @memberof PrivateEndpoint
     */
    '_id'?: any;
    /**
     * The cloud provider region that hosts the private endpoint.
     * @type {any}
     * @memberof PrivateEndpoint
     */
    'cloud_provider_region'?: any;
    /**
     * The private endpoint ID from the cloud provider.
     * @type {any}
     * @memberof PrivateEndpoint
     */
    'cloud_provider_endpoint_id'?: any;
    /**
     * An optional comment that describes the endpoint.
     * @type {any}
     * @memberof PrivateEndpoint
     */
    'comment'?: any;
}
/**
 * 
 * @export
 * @interface PrivateEndpointServiceInfo
 */
export interface PrivateEndpointServiceInfo {
    /**
     * 
     * @type {any}
     * @memberof PrivateEndpointServiceInfo
     */
    'cloud_provider_region'?: any;
    /**
     * 
     * @type {any}
     * @memberof PrivateEndpointServiceInfo
     */
    'name'?: any;
    /**
     * 
     * @type {any}
     * @memberof PrivateEndpointServiceInfo
     */
    'dns'?: any;
    /**
     * 
     * @type {any}
     * @memberof PrivateEndpointServiceInfo
     */
    'service_name'?: any;
}
/**
 * 
 * @export
 * @interface ProviderType
 */
export interface ProviderType {
}
/**
 * 
 * @export
 * @interface RefreshTokenExpiration
 */
export interface RefreshTokenExpiration {
    /**
     * The time in seconds that a user session refresh token is valid for after it is issued. After this time, the token is expired and the user must re-authenticate.  The expiration time must be between 30 minutes and 180 days, inclusive. The default expiration time is 60 days.
     * @type {any}
     * @memberof RefreshTokenExpiration
     */
    'expiration_time_seconds'?: any;
}
/**
 * A [relationship](https://www.mongodb.com/docs/realm/schemas/relationships/) definition.
 * @export
 * @interface Relationship
 */
export interface Relationship {
    /**
     * A reference string for the foreign collection.
     * @type {any}
     * @memberof Relationship
     */
    'ref'?: any;
    /**
     * The name of the field in the foreign collection that the relationship points to.
     * @type {any}
     * @memberof Relationship
     */
    'foreign_key'?: any;
    /**
     * If `true`:  - the relationship may point to many foreign documents. - the local field must be defined as an array in the collection schema.
     * @type {any}
     * @memberof Relationship
     */
    'is_list'?: any;
}
/**
 * A data access role that assigns read and write permissions to a user for each document
 * @export
 * @interface Role
 */
export interface Role {
    /**
     * The role\'s unique ObjectId identifier.
     * @type {any}
     * @memberof Role
     */
    '_id'?: any;
    /**
     * The role\'s name.
     * @type {any}
     * @memberof Role
     */
    'name'?: any;
    /**
     * A [rule expression](https://mongodb.com/docs/atlas/app-services/rules/expressions/).
     * @type {any}
     * @memberof Role
     */
    'apply_when'?: any | null;
    /**
     * A [rule expression](https://mongodb.com/docs/atlas/app-services/rules/expressions/).
     * @type {any}
     * @memberof Role
     */
    'write'?: any | null;
    /**
     * A [rule expression](https://mongodb.com/docs/atlas/app-services/rules/expressions/).
     * @type {any}
     * @memberof Role
     */
    'insert'?: any | null;
    /**
     * A [rule expression](https://mongodb.com/docs/atlas/app-services/rules/expressions/).
     * @type {any}
     * @memberof Role
     */
    'delete'?: any | null;
    /**
     * A [rule expression](https://mongodb.com/docs/atlas/app-services/rules/expressions/).
     * @type {any}
     * @memberof Role
     */
    'search'?: any | null;
    /**
     * An object that maps document field names to read and write permissions for the field and its children.
     * @type {{ [key: string]: any; }}
     * @memberof Role
     */
    'fields'?: { [key: string]: any; };
    /**
     * Field-level rules for any fields that are not explicitly configured in the role\'s `properties`.
     * @type {FieldLevelPermissions}
     * @memberof Role
     */
    'additional_fields'?: FieldLevelPermissions;
}
/**
 * A data access rule that defines user roles and query filters for a collection in a linked data source.
 * @export
 * @interface Rule
 */
export interface Rule {
    /**
     * The rule\'s unique ObjectId identifier.
     * @type {any}
     * @memberof Rule
     */
    '_id'?: any;
    /**
     * The name of a database in the linked data source.
     * @type {any}
     * @memberof Rule
     */
    'database': any;
    /**
     * The name of a collection in the specified `database`.
     * @type {any}
     * @memberof Rule
     */
    'collection': any;
    /**
     * A list of data access roles.
     * @type {any}
     * @memberof Rule
     */
    'roles'?: any;
    /**
     * A list of filters for incoming operations.
     * @type {any}
     * @memberof Rule
     */
    'filters'?: any;
}
/**
 * 
 * @export
 * @interface RuleMetrics
 */
export interface RuleMetrics {
    /**
     * 
     * @type {RuleMetricsRuleMetrics}
     * @memberof RuleMetrics
     */
    'rule_metrics'?: RuleMetricsRuleMetrics;
}
/**
 * 
 * @export
 * @interface RuleMetricsRuleMetrics
 */
export interface RuleMetricsRuleMetrics {
    /**
     * 
     * @type {{ [key: string]: RuleMetricsRuleMetricsNamespacesMetricsValue; }}
     * @memberof RuleMetricsRuleMetrics
     */
    'namespaces_metrics'?: { [key: string]: RuleMetricsRuleMetricsNamespacesMetricsValue; };
}
/**
 * Metrics for a specific `database.collection` namespace.
 * @export
 * @interface RuleMetricsRuleMetricsNamespacesMetricsValue
 */
export interface RuleMetricsRuleMetricsNamespacesMetricsValue {
    /**
     * 
     * @type {{ [key: string]: RuleMetricsRuleMetricsNamespacesMetricsValueRolesValue; }}
     * @memberof RuleMetricsRuleMetricsNamespacesMetricsValue
     */
    'roles'?: { [key: string]: RuleMetricsRuleMetricsNamespacesMetricsValueRolesValue; };
    /**
     * 
     * @type {any}
     * @memberof RuleMetricsRuleMetricsNamespacesMetricsValue
     */
    'no_matching_role'?: any;
}
/**
 * Metrics for a specific role.
 * @export
 * @interface RuleMetricsRuleMetricsNamespacesMetricsValueRolesValue
 */
export interface RuleMetricsRuleMetricsNamespacesMetricsValueRolesValue {
    /**
     * 
     * @type {any}
     * @memberof RuleMetricsRuleMetricsNamespacesMetricsValueRolesValue
     */
    'matching_documents'?: any;
    /**
     * 
     * @type {any}
     * @memberof RuleMetricsRuleMetricsNamespacesMetricsValueRolesValue
     */
    'evaluated_fields'?: any;
    /**
     * 
     * @type {any}
     * @memberof RuleMetricsRuleMetricsNamespacesMetricsValueRolesValue
     */
    'discarded_fields'?: any;
}
/**
 * Metadata the describes which linked collection the schema applies to.
 * @export
 * @interface SchemaMetadata
 */
export interface SchemaMetadata {
    /**
     * The data source name.
     * @type {any}
     * @memberof SchemaMetadata
     */
    'data_source'?: any;
    /**
     * The database name.
     * @type {any}
     * @memberof SchemaMetadata
     */
    'database'?: any;
    /**
     * The collection name.
     * @type {any}
     * @memberof SchemaMetadata
     */
    'collection'?: any;
}
/**
 * 
 * @export
 * @interface SyncDataResponse
 */
export interface SyncDataResponse {
    /**
     * The Service ID for the linked cluster.
     * @type {any}
     * @memberof SyncDataResponse
     */
    'clusterId'?: any;
    /**
     * The name of the linked cluster
     * @type {any}
     * @memberof SyncDataResponse
     */
    'clusterName'?: any;
    /**
     * The service type of the linked cluster (\"atlas\" by default)
     * @type {any}
     * @memberof SyncDataResponse
     */
    'clusterType'?: any;
    /**
     * 
     * @type {SyncDataResponseFlexibleSync}
     * @memberof SyncDataResponse
     */
    'flexible_sync'?: SyncDataResponseFlexibleSync;
    /**
     * The name of the App\'s Atlas Project.
     * @type {any}
     * @memberof SyncDataResponse
     */
    'groupName'?: any;
    /**
     * The name of the App\'s Atlas Organization.
     * @type {any}
     * @memberof SyncDataResponse
     */
    'orgName'?: any;
    /**
     * 
     * @type {any}
     * @memberof SyncDataResponse
     */
    'readPreference'?: SyncDataResponseReadPreferenceEnum;
    /**
     * If true, clients may [connect to the app over the MongoDB Wire Protocol](https://www.mongodb.com/docs/atlas/app-services/mongodb/wire-protocol/#connect-over-the-wire-protocol).
     * @type {any}
     * @memberof SyncDataResponse
     */
    'wireProtocolEnabled'?: any;
}

export const SyncDataResponseReadPreferenceEnum = {
    Primary: 'primary',
    PrimaryPreferred: 'primaryPreferred',
    Secondary: 'secondary',
    SecondaryPreferred: 'secondaryPreferred',
    Nearest: 'nearest'
} as const;

export type SyncDataResponseReadPreferenceEnum = typeof SyncDataResponseReadPreferenceEnum[keyof typeof SyncDataResponseReadPreferenceEnum];

/**
 * 
 * @export
 * @interface SyncDataResponseFlexibleSync
 */
export interface SyncDataResponseFlexibleSync {
    /**
     * The state of the sync service (\"enabled\", \"disabled\", or empty if Sync is not configured).
     * @type {any}
     * @memberof SyncDataResponseFlexibleSync
     */
    'state'?: any;
    /**
     * An array of  [queryable field](https://www.mongodb.com/docs/atlas/app-services/sync/configure/sync-settings/#queryable-fields)  names on **any collection**.
     * @type {any}
     * @memberof SyncDataResponseFlexibleSync
     */
    'queryable_fields_names'?: any;
    /**
     * An array of  [queryable field](https://www.mongodb.com/docs/atlas/app-services/sync/configure/sync-settings/#queryable-fields)  names on the specified collection.
     * @type {{ [key: string]: { [key: string]: any; }; }}
     * @memberof SyncDataResponseFlexibleSync
     */
    'collection_queryable_fields_names'?: { [key: string]: { [key: string]: any; }; };
    /**
     * The version of the queryable field.
     * @type {any}
     * @memberof SyncDataResponseFlexibleSync
     */
    'queryable_fields_version'?: any;
    /**
     * **Deprecated**
     * @type {any}
     * @memberof SyncDataResponseFlexibleSync
     */
    'permissions'?: any;
    /**
     * The last time Sync was disabled, represented by the number of seconds since the UNIX epoch.
     * @type {any}
     * @memberof SyncDataResponseFlexibleSync
     */
    'last_disabled'?: any;
    /**
     * The number of days the client can be offline before a client  [reset](https://www.mongodb.com/docs/atlas/app-services/sync/error-handling/client-resets/)  is required.
     * @type {any}
     * @memberof SyncDataResponseFlexibleSync
     */
    'client_max_offline_days'?: any;
    /**
     * Specifies whether the  [client reset mode](https://www.mongodb.com/docs/atlas/app-services/sync/error-handling/client-resets/#recover-unsynced-changes)  is disabled. By default, client reset mode is enabled and this value is **false**.
     * @type {any}
     * @memberof SyncDataResponseFlexibleSync
     */
    'is_recovery_mode_disabled'?: any;
}
/**
 * 
 * @export
 * @interface SyncSession
 */
export interface SyncSession {
    /**
     * The current subscription queries for this Device Sync session. This object maps object type names to the query for that type. 
     * @type {any}
     * @memberof SyncSession
     */
    'sync_query'?: any;
    /**
     * Usage metrics for the current Device Sync session. 
     * @type {any}
     * @memberof SyncSession
     */
    'sync_session_metrics'?: any;
}
/**
 * **THIRD-PARTY SERVICES ARE DEPRECATED**  See [Third-Party Services](https://www.mongodb.com/docs/atlas/app-services/reference/services/) for more information.
 * @export
 * @interface ThirdPartyService
 */
export interface ThirdPartyService {
    /**
     * A unique ID for the third-party service.
     * @type {any}
     * @memberof ThirdPartyService
     */
    '_id'?: any;
    /**
     * The third-party service name.
     * @type {any}
     * @memberof ThirdPartyService
     */
    'name'?: any;
    /**
     * The type of third party service.
     * @type {any}
     * @memberof ThirdPartyService
     */
    'type'?: ThirdPartyServiceTypeEnum;
    /**
     * 
     * @type {any}
     * @memberof ThirdPartyService
     */
    'version'?: any;
}

export const ThirdPartyServiceTypeEnum = {
    Aws: 'aws',
    Twilio: 'twilio',
    Github: 'github',
    Gcm: 'gcm'
} as const;

export type ThirdPartyServiceTypeEnum = typeof ThirdPartyServiceTypeEnum[keyof typeof ThirdPartyServiceTypeEnum];

/**
 * [Deprecated] A rule for a third-party service.
 * @export
 * @interface ThirdPartyServiceRule
 */
export interface ThirdPartyServiceRule {
    /**
     * 
     * @type {any}
     * @memberof ThirdPartyServiceRule
     */
    'name': any;
    /**
     * 
     * @type {any}
     * @memberof ThirdPartyServiceRule
     */
    'actions'?: any;
    /**
     * 
     * @type {any}
     * @memberof ThirdPartyServiceRule
     */
    'when': any;
}
/**
 * 
 * @export
 * @interface User
 */
export interface User {
    /**
     * The unique user account ID
     * @type {any}
     * @memberof User
     */
    '_id'?: any;
    /**
     * A list of authentication provider identities associated with the user account.
     * @type {any}
     * @memberof User
     */
    'identities'?: any;
    /**
     * The user type. Most users are `normal` and represent a specific human user. Users created through the `api-key` provider have the type `server` because they are typically used for programmatic access from a server.
     * @type {any}
     * @memberof User
     */
    'type'?: UserTypeEnum;
    /**
     * The date and time that the user account was created. Represented by the number of seconds since the UNIX epoch.
     * @type {any}
     * @memberof User
     */
    'creation_date'?: any;
    /**
     * The date and time that the user account last logged in or authenticated a request. Represented by the number of seconds since the UNIX epoch.
     * @type {any}
     * @memberof User
     */
    'last_authentication_date'?: any;
    /**
     * If `true`, the user account is inactive and cannot login or interact with App Services.
     * @type {any}
     * @memberof User
     */
    'disabled'?: any;
    /**
     * Metadata that describes the user. This field combines the data for all authentication identities associated with the user. The exact field names and values depend on which authentication providers the user has authenticated with.  For example, if a user has linked an email/password account with their Google account, this object might contain their `email` as well as metadata fields from Google like `name` and `picture`.
     * @type {any}
     * @memberof User
     */
    'data'?: any;
}

export const UserTypeEnum = {
    Normal: 'normal',
    Server: 'server'
} as const;

export type UserTypeEnum = typeof UserTypeEnum[keyof typeof UserTypeEnum];

/**
 * An authenticated identity from an authentication provider. This represents the user account within an individual auth provider and maps the account to external authentication systems.
 * @export
 * @interface UserIdentity
 */
export interface UserIdentity {
    /**
     * 
     * @type {any}
     * @memberof UserIdentity
     */
    'id'?: any;
    /**
     * 
     * @type {ProviderType}
     * @memberof UserIdentity
     */
    'provider_type'?: ProviderType;
    /**
     * 
     * @type {any}
     * @memberof UserIdentity
     */
    'provider_id'?: any;
}


/**
 * 
 * @export
 * @interface Value
 */
export interface Value {
    /**
     * 
     * @type {any}
     * @memberof Value
     */
    '_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof Value
     */
    'name'?: any;
    /**
     * 
     * @type {any}
     * @memberof Value
     */
    'private'?: any;
    /**
     * 
     * @type {any}
     * @memberof Value
     */
    'value'?: any;
}
/**
 * 
 * @export
 * @interface ValueSummary
 */
export interface ValueSummary {
    /**
     * 
     * @type {any}
     * @memberof ValueSummary
     */
    '_id'?: any;
    /**
     * 
     * @type {any}
     * @memberof ValueSummary
     */
    'name'?: any;
    /**
     * 
     * @type {any}
     * @memberof ValueSummary
     */
    'private'?: any;
}

/**
 * AdminApi - axios parameter creator
 * @export
 */
export const AdminApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @summary Obtain a session access token
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateSession: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            const localVarPath = `/auth/session`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication refreshAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Delete a session access token
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteSession: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            const localVarPath = `/auth/session`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Authenticate as an App Services administrator using an Atlas programmatic API key pair. To learn more, see [Get An Admin API Session Access Token](#get-an-admin-api-session-access-token). 
         * @summary Authenticate as an App Services administrator
         * @param {ProviderType} provider The authentication provider to use.
         * @param {AdminLoginRequest} adminLoginRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminLogin: async (provider: ProviderType, adminLoginRequest: AdminLoginRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'provider' is not null or undefined
            assertParamExists('adminLogin', 'provider', provider)
            // verify required parameter 'adminLoginRequest' is not null or undefined
            assertParamExists('adminLogin', 'adminLoginRequest', adminLoginRequest)
            const localVarPath = `/auth/providers/{provider}/login`
                .replace(`{${"provider"}}`, encodeURIComponent(String(provider)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminLoginRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary List App Services Admin Auth Providers
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAdminAuthProviders: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            const localVarPath = `/auth/providers`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Get information about the currently logged in user
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAdminProfile: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            const localVarPath = `/auth/profile`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * AdminApi - functional programming interface
 * @export
 */
export const AdminApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = AdminApiAxiosParamCreator(configuration)
    return {
        /**
         * 
         * @summary Obtain a session access token
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateSession(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminCreateSession201Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateSession(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Delete a session access token
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteSession(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteSession(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Authenticate as an App Services administrator using an Atlas programmatic API key pair. To learn more, see [Get An Admin API Session Access Token](#get-an-admin-api-session-access-token). 
         * @summary Authenticate as an App Services administrator
         * @param {ProviderType} provider The authentication provider to use.
         * @param {AdminLoginRequest} adminLoginRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminLogin(provider: ProviderType, adminLoginRequest: AdminLoginRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminLogin200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminLogin(provider, adminLoginRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary List App Services Admin Auth Providers
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getAdminAuthProviders(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getAdminAuthProviders(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Get information about the currently logged in user
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getAdminProfile(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminUser>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getAdminProfile(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * AdminApi - factory interface
 * @export
 */
export const AdminApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = AdminApiFp(configuration)
    return {
        /**
         * 
         * @summary Obtain a session access token
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateSession(options?: any): AxiosPromise<AdminCreateSession201Response> {
            return localVarFp.adminCreateSession(options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Delete a session access token
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteSession(options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteSession(options).then((request) => request(axios, basePath));
        },
        /**
         * Authenticate as an App Services administrator using an Atlas programmatic API key pair. To learn more, see [Get An Admin API Session Access Token](#get-an-admin-api-session-access-token). 
         * @summary Authenticate as an App Services administrator
         * @param {ProviderType} provider The authentication provider to use.
         * @param {AdminLoginRequest} adminLoginRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminLogin(provider: ProviderType, adminLoginRequest: AdminLoginRequest, options?: any): AxiosPromise<AdminLogin200Response> {
            return localVarFp.adminLogin(provider, adminLoginRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary List App Services Admin Auth Providers
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAdminAuthProviders(options?: any): AxiosPromise<any> {
            return localVarFp.getAdminAuthProviders(options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Get information about the currently logged in user
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAdminProfile(options?: any): AxiosPromise<AdminUser> {
            return localVarFp.getAdminProfile(options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * AdminApi - interface
 * @export
 * @interface AdminApi
 */
export interface AdminApiInterface {
    /**
     * 
     * @summary Obtain a session access token
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApiInterface
     */
    adminCreateSession(options?: AxiosRequestConfig): AxiosPromise<AdminCreateSession201Response>;

    /**
     * 
     * @summary Delete a session access token
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApiInterface
     */
    adminDeleteSession(options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Authenticate as an App Services administrator using an Atlas programmatic API key pair. To learn more, see [Get An Admin API Session Access Token](#get-an-admin-api-session-access-token). 
     * @summary Authenticate as an App Services administrator
     * @param {ProviderType} provider The authentication provider to use.
     * @param {AdminLoginRequest} adminLoginRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApiInterface
     */
    adminLogin(provider: ProviderType, adminLoginRequest: AdminLoginRequest, options?: AxiosRequestConfig): AxiosPromise<AdminLogin200Response>;

    /**
     * 
     * @summary List App Services Admin Auth Providers
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApiInterface
     */
    getAdminAuthProviders(options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * 
     * @summary Get information about the currently logged in user
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApiInterface
     */
    getAdminProfile(options?: AxiosRequestConfig): AxiosPromise<AdminUser>;

}

/**
 * AdminApi - object-oriented interface
 * @export
 * @class AdminApi
 * @extends {BaseAPI}
 */
export class AdminApi extends BaseAPI implements AdminApiInterface {
    /**
     * 
     * @summary Obtain a session access token
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public adminCreateSession(options?: AxiosRequestConfig) {
        return AdminApiFp(this.configuration).adminCreateSession(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Delete a session access token
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public adminDeleteSession(options?: AxiosRequestConfig) {
        return AdminApiFp(this.configuration).adminDeleteSession(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Authenticate as an App Services administrator using an Atlas programmatic API key pair. To learn more, see [Get An Admin API Session Access Token](#get-an-admin-api-session-access-token). 
     * @summary Authenticate as an App Services administrator
     * @param {ProviderType} provider The authentication provider to use.
     * @param {AdminLoginRequest} adminLoginRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public adminLogin(provider: ProviderType, adminLoginRequest: AdminLoginRequest, options?: AxiosRequestConfig) {
        return AdminApiFp(this.configuration).adminLogin(provider, adminLoginRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary List App Services Admin Auth Providers
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public getAdminAuthProviders(options?: AxiosRequestConfig) {
        return AdminApiFp(this.configuration).getAdminAuthProviders(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Get information about the currently logged in user
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public getAdminProfile(options?: AxiosRequestConfig) {
        return AdminApiFp(this.configuration).getAdminProfile(options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * ApikeysApi - axios parameter creator
 * @export
 */
export const ApikeysApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create a new [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Create a new API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateApiKeyRequest} adminCreateApiKeyRequest The API key to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateApiKey: async (groupId: any, appId: any, adminCreateApiKeyRequest: AdminCreateApiKeyRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateApiKey', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateApiKey', 'appId', appId)
            // verify required parameter 'adminCreateApiKeyRequest' is not null or undefined
            assertParamExists('adminCreateApiKey', 'adminCreateApiKeyRequest', adminCreateApiKeyRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/api_keys`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminCreateApiKeyRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Delete an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteApiKey: async (groupId: any, appId: any, apiKeyId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteApiKey', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteApiKey', 'appId', appId)
            // verify required parameter 'apiKeyId' is not null or undefined
            assertParamExists('adminDeleteApiKey', 'apiKeyId', apiKeyId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/api_keys/{apiKeyId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"apiKeyId"}}`, encodeURIComponent(String(apiKeyId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Disable an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Disable an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDisableApiKey: async (groupId: any, appId: any, apiKeyId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDisableApiKey', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDisableApiKey', 'appId', appId)
            // verify required parameter 'apiKeyId' is not null or undefined
            assertParamExists('adminDisableApiKey', 'apiKeyId', apiKeyId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/api_keys/{apiKeyId}/disable`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"apiKeyId"}}`, encodeURIComponent(String(apiKeyId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Enable an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Enable an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminEnableApiKey: async (groupId: any, appId: any, apiKeyId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminEnableApiKey', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminEnableApiKey', 'appId', appId)
            // verify required parameter 'apiKeyId' is not null or undefined
            assertParamExists('adminEnableApiKey', 'apiKeyId', apiKeyId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/api_keys/{apiKeyId}/enable`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"apiKeyId"}}`, encodeURIComponent(String(apiKeyId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Retrieve information about an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Retrieve information about an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetApiKey: async (groupId: any, appId: any, apiKeyId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetApiKey', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetApiKey', 'appId', appId)
            // verify required parameter 'apiKeyId' is not null or undefined
            assertParamExists('adminGetApiKey', 'apiKeyId', apiKeyId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/api_keys/{apiKeyId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"apiKeyId"}}`, encodeURIComponent(String(apiKeyId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List [API keys](https://www.mongodb.com/docs/realm/authentication/api-key/) associated with a Atlas App Services App.
         * @summary List API keys
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListApiKeys: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListApiKeys', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListApiKeys', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/api_keys`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ApikeysApi - functional programming interface
 * @export
 */
export const ApikeysApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = ApikeysApiAxiosParamCreator(configuration)
    return {
        /**
         * Create a new [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Create a new API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateApiKeyRequest} adminCreateApiKeyRequest The API key to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateApiKey(groupId: any, appId: any, adminCreateApiKeyRequest: AdminCreateApiKeyRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApiKey>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateApiKey(groupId, appId, adminCreateApiKeyRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Delete an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteApiKey(groupId, appId, apiKeyId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Disable an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Disable an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDisableApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDisableApiKey(groupId, appId, apiKeyId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Enable an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Enable an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminEnableApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminEnableApiKey(groupId, appId, apiKeyId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Retrieve information about an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Retrieve information about an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApiKeyResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetApiKey(groupId, appId, apiKeyId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List [API keys](https://www.mongodb.com/docs/realm/authentication/api-key/) associated with a Atlas App Services App.
         * @summary List API keys
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListApiKeys(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListApiKeys(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * ApikeysApi - factory interface
 * @export
 */
export const ApikeysApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = ApikeysApiFp(configuration)
    return {
        /**
         * Create a new [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Create a new API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateApiKeyRequest} adminCreateApiKeyRequest The API key to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateApiKey(groupId: any, appId: any, adminCreateApiKeyRequest: AdminCreateApiKeyRequest, options?: any): AxiosPromise<ApiKey> {
            return localVarFp.adminCreateApiKey(groupId, appId, adminCreateApiKeyRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Delete an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteApiKey(groupId: any, appId: any, apiKeyId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteApiKey(groupId, appId, apiKeyId, options).then((request) => request(axios, basePath));
        },
        /**
         * Disable an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Disable an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDisableApiKey(groupId: any, appId: any, apiKeyId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDisableApiKey(groupId, appId, apiKeyId, options).then((request) => request(axios, basePath));
        },
        /**
         * Enable an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Enable an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminEnableApiKey(groupId: any, appId: any, apiKeyId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminEnableApiKey(groupId, appId, apiKeyId, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve information about an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
         * @summary Retrieve information about an API key
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetApiKey(groupId: any, appId: any, apiKeyId: any, options?: any): AxiosPromise<ApiKeyResponse> {
            return localVarFp.adminGetApiKey(groupId, appId, apiKeyId, options).then((request) => request(axios, basePath));
        },
        /**
         * List [API keys](https://www.mongodb.com/docs/realm/authentication/api-key/) associated with a Atlas App Services App.
         * @summary List API keys
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListApiKeys(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListApiKeys(groupId, appId, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * ApikeysApi - interface
 * @export
 * @interface ApikeysApi
 */
export interface ApikeysApiInterface {
    /**
     * Create a new [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
     * @summary Create a new API key
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminCreateApiKeyRequest} adminCreateApiKeyRequest The API key to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApiInterface
     */
    adminCreateApiKey(groupId: any, appId: any, adminCreateApiKeyRequest: AdminCreateApiKeyRequest, options?: AxiosRequestConfig): AxiosPromise<ApiKey>;

    /**
     * Delete an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
     * @summary Delete an API key
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApiInterface
     */
    adminDeleteApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Disable an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
     * @summary Disable an API key
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApiInterface
     */
    adminDisableApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Enable an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
     * @summary Enable an API key
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApiInterface
     */
    adminEnableApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Retrieve information about an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
     * @summary Retrieve information about an API key
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApiInterface
     */
    adminGetApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig): AxiosPromise<ApiKeyResponse>;

    /**
     * List [API keys](https://www.mongodb.com/docs/realm/authentication/api-key/) associated with a Atlas App Services App.
     * @summary List API keys
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApiInterface
     */
    adminListApiKeys(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

}

/**
 * ApikeysApi - object-oriented interface
 * @export
 * @class ApikeysApi
 * @extends {BaseAPI}
 */
export class ApikeysApi extends BaseAPI implements ApikeysApiInterface {
    /**
     * Create a new [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
     * @summary Create a new API key
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminCreateApiKeyRequest} adminCreateApiKeyRequest The API key to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApi
     */
    public adminCreateApiKey(groupId: any, appId: any, adminCreateApiKeyRequest: AdminCreateApiKeyRequest, options?: AxiosRequestConfig) {
        return ApikeysApiFp(this.configuration).adminCreateApiKey(groupId, appId, adminCreateApiKeyRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
     * @summary Delete an API key
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApi
     */
    public adminDeleteApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig) {
        return ApikeysApiFp(this.configuration).adminDeleteApiKey(groupId, appId, apiKeyId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Disable an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
     * @summary Disable an API key
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApi
     */
    public adminDisableApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig) {
        return ApikeysApiFp(this.configuration).adminDisableApiKey(groupId, appId, apiKeyId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Enable an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
     * @summary Enable an API key
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApi
     */
    public adminEnableApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig) {
        return ApikeysApiFp(this.configuration).adminEnableApiKey(groupId, appId, apiKeyId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Retrieve information about an [API key](https://www.mongodb.com/docs/realm/authentication/api-key/).
     * @summary Retrieve information about an API key
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} apiKeyId The unique &#x60;_id&#x60; value of an API key
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApi
     */
    public adminGetApiKey(groupId: any, appId: any, apiKeyId: any, options?: AxiosRequestConfig) {
        return ApikeysApiFp(this.configuration).adminGetApiKey(groupId, appId, apiKeyId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List [API keys](https://www.mongodb.com/docs/realm/authentication/api-key/) associated with a Atlas App Services App.
     * @summary List API keys
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ApikeysApi
     */
    public adminListApiKeys(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return ApikeysApiFp(this.configuration).adminListApiKeys(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * AppsApi - axios parameter creator
 * @export
 */
export const AppsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @summary Create a new app
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} body The application to create.
         * @param {any} [defaults] Whether or not to create a default application.
         * @param {AdminCreateApplicationProductEnum} [product] The App\&#39;s product type. Apps use the &#x60;standard&#x60; product type by default. For most apps, you do not need to specify a &#x60;product&#x60; at all, or should specify &#x60;standard&#x60;.  The &#x60;atlas&#x60; and &#x60;data-api&#x60; product types represent special, apps for [Atlas Triggers](https://docs.mongodb.com/atlas/triggers) and [Atlas Data API](https://docs.mongodb.com/atlas/api/data-api/) that you can access through the Atlas UI.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateApplication: async (groupId: any, body: any, defaults?: any, product?: AdminCreateApplicationProductEnum, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateApplication', 'groupId', groupId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('adminCreateApplication', 'body', body)
            const localVarPath = `/groups/{groupId}/apps`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (defaults !== undefined) {
                localVarQueryParameter['defaults'] = defaults;
            }

            if (product !== undefined) {
                localVarQueryParameter['product'] = product;
            }



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Delete an app
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteApplication: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteApplication', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteApplication', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * [Export](https://www.mongodb.com/docs/atlas/app-services/apps/export/) an application as a zip file.
         * @summary Export an app as a zip file
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [deployment] The &#x60;_id&#x60; of a specific deployment to export. If not specified, export the latest deployment.
         * @param {any} [sourceControl] If &#x60;true&#x60;, the exported directory is suitable for automatic deployment from GitHub or other source control.  Cannot be used with the &#x60;template&#x60; query parameter.
         * @param {any} [template] If &#x60;true&#x60;, the exported directory does not include any identifiers or other data that would tie the app to a specific deployment instance.  Cannot be used with the &#x60;source_control&#x60; query parameter.
         * @param {any} [version] The configuration file schema version to export. This value corresponds to &#x60;config_version&#x60; in &#x60;realm_config.json&#x60;.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminExportApplication: async (groupId: any, appId: any, deployment?: any, sourceControl?: any, template?: any, version?: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminExportApplication', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminExportApplication', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/export`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (deployment !== undefined) {
                localVarQueryParameter['deployment'] = deployment;
            }

            if (sourceControl !== undefined) {
                localVarQueryParameter['source_control'] = sourceControl;
            }

            if (template !== undefined) {
                localVarQueryParameter['template'] = template;
            }

            if (version !== undefined) {
                localVarQueryParameter['version'] = version;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Get an app
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetApplication: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetApplication', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetApplication', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List all App Services Apps within an Atlas [project/group](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @summary List all App Services Apps in an Atlas project/group
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {AdminListApplicationsProductEnum} [product] One or more specific App Services product types. If specified, this endpoint only returns Apps of the specified product type(s).  Most apps use the &#x60;standard&#x60; product type, which this endpoint returns by default. The &#x60;atlas&#x60; and &#x60;data-api&#x60; product types represent special apps for [Atlas Triggers](https://docs.mongodb.com/atlas/triggers) and [Atlas Data API](https://docs.mongodb.com/atlas/api/data-api/) that you can access through the Atlas UI.  You can specify multiple product types as a comma-separated list:  &#x60;&#x60;&#x60; /groups/{groupId}/apps?product&#x3D;atlas,data-api &#x60;&#x60;&#x60;
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListApplications: async (groupId: any, product?: AdminListApplicationsProductEnum, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListApplications', 'groupId', groupId)
            const localVarPath = `/groups/{groupId}/apps`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (product !== undefined) {
                localVarQueryParameter['product'] = product;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * AppsApi - functional programming interface
 * @export
 */
export const AppsApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = AppsApiAxiosParamCreator(configuration)
    return {
        /**
         * 
         * @summary Create a new app
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} body The application to create.
         * @param {any} [defaults] Whether or not to create a default application.
         * @param {AdminCreateApplicationProductEnum} [product] The App\&#39;s product type. Apps use the &#x60;standard&#x60; product type by default. For most apps, you do not need to specify a &#x60;product&#x60; at all, or should specify &#x60;standard&#x60;.  The &#x60;atlas&#x60; and &#x60;data-api&#x60; product types represent special, apps for [Atlas Triggers](https://docs.mongodb.com/atlas/triggers) and [Atlas Data API](https://docs.mongodb.com/atlas/api/data-api/) that you can access through the Atlas UI.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateApplication(groupId: any, body: any, defaults?: any, product?: AdminCreateApplicationProductEnum, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateApplication(groupId, body, defaults, product, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Delete an app
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteApplication(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteApplication(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * [Export](https://www.mongodb.com/docs/atlas/app-services/apps/export/) an application as a zip file.
         * @summary Export an app as a zip file
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [deployment] The &#x60;_id&#x60; of a specific deployment to export. If not specified, export the latest deployment.
         * @param {any} [sourceControl] If &#x60;true&#x60;, the exported directory is suitable for automatic deployment from GitHub or other source control.  Cannot be used with the &#x60;template&#x60; query parameter.
         * @param {any} [template] If &#x60;true&#x60;, the exported directory does not include any identifiers or other data that would tie the app to a specific deployment instance.  Cannot be used with the &#x60;source_control&#x60; query parameter.
         * @param {any} [version] The configuration file schema version to export. This value corresponds to &#x60;config_version&#x60; in &#x60;realm_config.json&#x60;.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminExportApplication(groupId: any, appId: any, deployment?: any, sourceControl?: any, template?: any, version?: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminExportApplication(groupId, appId, deployment, sourceControl, template, version, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Get an app
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetApplication(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetApplication(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List all App Services Apps within an Atlas [project/group](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @summary List all App Services Apps in an Atlas project/group
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {AdminListApplicationsProductEnum} [product] One or more specific App Services product types. If specified, this endpoint only returns Apps of the specified product type(s).  Most apps use the &#x60;standard&#x60; product type, which this endpoint returns by default. The &#x60;atlas&#x60; and &#x60;data-api&#x60; product types represent special apps for [Atlas Triggers](https://docs.mongodb.com/atlas/triggers) and [Atlas Data API](https://docs.mongodb.com/atlas/api/data-api/) that you can access through the Atlas UI.  You can specify multiple product types as a comma-separated list:  &#x60;&#x60;&#x60; /groups/{groupId}/apps?product&#x3D;atlas,data-api &#x60;&#x60;&#x60;
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListApplications(groupId: any, product?: AdminListApplicationsProductEnum, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListApplications(groupId, product, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * AppsApi - factory interface
 * @export
 */
export const AppsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = AppsApiFp(configuration)
    return {
        /**
         * 
         * @summary Create a new app
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} body The application to create.
         * @param {any} [defaults] Whether or not to create a default application.
         * @param {AdminCreateApplicationProductEnum} [product] The App\&#39;s product type. Apps use the &#x60;standard&#x60; product type by default. For most apps, you do not need to specify a &#x60;product&#x60; at all, or should specify &#x60;standard&#x60;.  The &#x60;atlas&#x60; and &#x60;data-api&#x60; product types represent special, apps for [Atlas Triggers](https://docs.mongodb.com/atlas/triggers) and [Atlas Data API](https://docs.mongodb.com/atlas/api/data-api/) that you can access through the Atlas UI.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateApplication(groupId: any, body: any, defaults?: any, product?: AdminCreateApplicationProductEnum, options?: any): AxiosPromise<any> {
            return localVarFp.adminCreateApplication(groupId, body, defaults, product, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Delete an app
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteApplication(groupId: any, appId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteApplication(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * [Export](https://www.mongodb.com/docs/atlas/app-services/apps/export/) an application as a zip file.
         * @summary Export an app as a zip file
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [deployment] The &#x60;_id&#x60; of a specific deployment to export. If not specified, export the latest deployment.
         * @param {any} [sourceControl] If &#x60;true&#x60;, the exported directory is suitable for automatic deployment from GitHub or other source control.  Cannot be used with the &#x60;template&#x60; query parameter.
         * @param {any} [template] If &#x60;true&#x60;, the exported directory does not include any identifiers or other data that would tie the app to a specific deployment instance.  Cannot be used with the &#x60;source_control&#x60; query parameter.
         * @param {any} [version] The configuration file schema version to export. This value corresponds to &#x60;config_version&#x60; in &#x60;realm_config.json&#x60;.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminExportApplication(groupId: any, appId: any, deployment?: any, sourceControl?: any, template?: any, version?: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminExportApplication(groupId, appId, deployment, sourceControl, template, version, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Get an app
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetApplication(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetApplication(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * List all App Services Apps within an Atlas [project/group](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @summary List all App Services Apps in an Atlas project/group
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {AdminListApplicationsProductEnum} [product] One or more specific App Services product types. If specified, this endpoint only returns Apps of the specified product type(s).  Most apps use the &#x60;standard&#x60; product type, which this endpoint returns by default. The &#x60;atlas&#x60; and &#x60;data-api&#x60; product types represent special apps for [Atlas Triggers](https://docs.mongodb.com/atlas/triggers) and [Atlas Data API](https://docs.mongodb.com/atlas/api/data-api/) that you can access through the Atlas UI.  You can specify multiple product types as a comma-separated list:  &#x60;&#x60;&#x60; /groups/{groupId}/apps?product&#x3D;atlas,data-api &#x60;&#x60;&#x60;
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListApplications(groupId: any, product?: AdminListApplicationsProductEnum, options?: any): AxiosPromise<any> {
            return localVarFp.adminListApplications(groupId, product, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * AppsApi - interface
 * @export
 * @interface AppsApi
 */
export interface AppsApiInterface {
    /**
     * 
     * @summary Create a new app
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} body The application to create.
     * @param {any} [defaults] Whether or not to create a default application.
     * @param {AdminCreateApplicationProductEnum} [product] The App\&#39;s product type. Apps use the &#x60;standard&#x60; product type by default. For most apps, you do not need to specify a &#x60;product&#x60; at all, or should specify &#x60;standard&#x60;.  The &#x60;atlas&#x60; and &#x60;data-api&#x60; product types represent special, apps for [Atlas Triggers](https://docs.mongodb.com/atlas/triggers) and [Atlas Data API](https://docs.mongodb.com/atlas/api/data-api/) that you can access through the Atlas UI.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppsApiInterface
     */
    adminCreateApplication(groupId: any, body: any, defaults?: any, product?: AdminCreateApplicationProductEnum, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * 
     * @summary Delete an app
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppsApiInterface
     */
    adminDeleteApplication(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * [Export](https://www.mongodb.com/docs/atlas/app-services/apps/export/) an application as a zip file.
     * @summary Export an app as a zip file
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [deployment] The &#x60;_id&#x60; of a specific deployment to export. If not specified, export the latest deployment.
     * @param {any} [sourceControl] If &#x60;true&#x60;, the exported directory is suitable for automatic deployment from GitHub or other source control.  Cannot be used with the &#x60;template&#x60; query parameter.
     * @param {any} [template] If &#x60;true&#x60;, the exported directory does not include any identifiers or other data that would tie the app to a specific deployment instance.  Cannot be used with the &#x60;source_control&#x60; query parameter.
     * @param {any} [version] The configuration file schema version to export. This value corresponds to &#x60;config_version&#x60; in &#x60;realm_config.json&#x60;.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppsApiInterface
     */
    adminExportApplication(groupId: any, appId: any, deployment?: any, sourceControl?: any, template?: any, version?: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * 
     * @summary Get an app
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppsApiInterface
     */
    adminGetApplication(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * List all App Services Apps within an Atlas [project/group](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @summary List all App Services Apps in an Atlas project/group
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {AdminListApplicationsProductEnum} [product] One or more specific App Services product types. If specified, this endpoint only returns Apps of the specified product type(s).  Most apps use the &#x60;standard&#x60; product type, which this endpoint returns by default. The &#x60;atlas&#x60; and &#x60;data-api&#x60; product types represent special apps for [Atlas Triggers](https://docs.mongodb.com/atlas/triggers) and [Atlas Data API](https://docs.mongodb.com/atlas/api/data-api/) that you can access through the Atlas UI.  You can specify multiple product types as a comma-separated list:  &#x60;&#x60;&#x60; /groups/{groupId}/apps?product&#x3D;atlas,data-api &#x60;&#x60;&#x60;
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppsApiInterface
     */
    adminListApplications(groupId: any, product?: AdminListApplicationsProductEnum, options?: AxiosRequestConfig): AxiosPromise<any>;

}

/**
 * AppsApi - object-oriented interface
 * @export
 * @class AppsApi
 * @extends {BaseAPI}
 */
export class AppsApi extends BaseAPI implements AppsApiInterface {
    /**
     * 
     * @summary Create a new app
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} body The application to create.
     * @param {any} [defaults] Whether or not to create a default application.
     * @param {AdminCreateApplicationProductEnum} [product] The App\&#39;s product type. Apps use the &#x60;standard&#x60; product type by default. For most apps, you do not need to specify a &#x60;product&#x60; at all, or should specify &#x60;standard&#x60;.  The &#x60;atlas&#x60; and &#x60;data-api&#x60; product types represent special, apps for [Atlas Triggers](https://docs.mongodb.com/atlas/triggers) and [Atlas Data API](https://docs.mongodb.com/atlas/api/data-api/) that you can access through the Atlas UI.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppsApi
     */
    public adminCreateApplication(groupId: any, body: any, defaults?: any, product?: AdminCreateApplicationProductEnum, options?: AxiosRequestConfig) {
        return AppsApiFp(this.configuration).adminCreateApplication(groupId, body, defaults, product, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Delete an app
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppsApi
     */
    public adminDeleteApplication(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return AppsApiFp(this.configuration).adminDeleteApplication(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * [Export](https://www.mongodb.com/docs/atlas/app-services/apps/export/) an application as a zip file.
     * @summary Export an app as a zip file
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [deployment] The &#x60;_id&#x60; of a specific deployment to export. If not specified, export the latest deployment.
     * @param {any} [sourceControl] If &#x60;true&#x60;, the exported directory is suitable for automatic deployment from GitHub or other source control.  Cannot be used with the &#x60;template&#x60; query parameter.
     * @param {any} [template] If &#x60;true&#x60;, the exported directory does not include any identifiers or other data that would tie the app to a specific deployment instance.  Cannot be used with the &#x60;source_control&#x60; query parameter.
     * @param {any} [version] The configuration file schema version to export. This value corresponds to &#x60;config_version&#x60; in &#x60;realm_config.json&#x60;.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppsApi
     */
    public adminExportApplication(groupId: any, appId: any, deployment?: any, sourceControl?: any, template?: any, version?: any, options?: AxiosRequestConfig) {
        return AppsApiFp(this.configuration).adminExportApplication(groupId, appId, deployment, sourceControl, template, version, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Get an app
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppsApi
     */
    public adminGetApplication(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return AppsApiFp(this.configuration).adminGetApplication(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List all App Services Apps within an Atlas [project/group](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @summary List all App Services Apps in an Atlas project/group
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {AdminListApplicationsProductEnum} [product] One or more specific App Services product types. If specified, this endpoint only returns Apps of the specified product type(s).  Most apps use the &#x60;standard&#x60; product type, which this endpoint returns by default. The &#x60;atlas&#x60; and &#x60;data-api&#x60; product types represent special apps for [Atlas Triggers](https://docs.mongodb.com/atlas/triggers) and [Atlas Data API](https://docs.mongodb.com/atlas/api/data-api/) that you can access through the Atlas UI.  You can specify multiple product types as a comma-separated list:  &#x60;&#x60;&#x60; /groups/{groupId}/apps?product&#x3D;atlas,data-api &#x60;&#x60;&#x60;
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppsApi
     */
    public adminListApplications(groupId: any, product?: AdminListApplicationsProductEnum, options?: AxiosRequestConfig) {
        return AppsApiFp(this.configuration).adminListApplications(groupId, product, options).then((request) => request(this.axios, this.basePath));
    }
}

/**
 * @export
 */
export const AdminCreateApplicationProductEnum = {
    Standard: 'standard',
    Atlas: 'atlas',
    DataApi: 'data-api'
} as const;
export type AdminCreateApplicationProductEnum = typeof AdminCreateApplicationProductEnum[keyof typeof AdminCreateApplicationProductEnum];
/**
 * @export
 */
export const AdminListApplicationsProductEnum = {
    Standard: 'standard',
    Atlas: 'atlas',
    DataApi: 'data-api'
} as const;
export type AdminListApplicationsProductEnum = typeof AdminListApplicationsProductEnum[keyof typeof AdminListApplicationsProductEnum];


/**
 * AuthprovidersApi - axios parameter creator
 * @export
 */
export const AuthprovidersApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Create an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} body 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateAuthProvider: async (groupId: any, appId: any, body: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateAuthProvider', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateAuthProvider', 'appId', appId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('adminCreateAuthProvider', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/auth_providers`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Delete an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteAuthProvider: async (groupId: any, appId: any, providerId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteAuthProvider', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteAuthProvider', 'appId', appId)
            // verify required parameter 'providerId' is not null or undefined
            assertParamExists('adminDeleteAuthProvider', 'providerId', providerId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/auth_providers/{providerId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"providerId"}}`, encodeURIComponent(String(providerId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Disable an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Disable an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDisableAuthProvider: async (groupId: any, appId: any, providerId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDisableAuthProvider', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDisableAuthProvider', 'appId', appId)
            // verify required parameter 'providerId' is not null or undefined
            assertParamExists('adminDisableAuthProvider', 'providerId', providerId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/auth_providers/{providerId}/disable`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"providerId"}}`, encodeURIComponent(String(providerId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Enable an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Enable an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminEnableAuthProvider: async (groupId: any, appId: any, providerId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminEnableAuthProvider', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminEnableAuthProvider', 'appId', appId)
            // verify required parameter 'providerId' is not null or undefined
            assertParamExists('adminEnableAuthProvider', 'providerId', providerId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/auth_providers/{providerId}/enable`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"providerId"}}`, encodeURIComponent(String(providerId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Retrieve information about one of an application\'s [authentication providers](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Retrieve information about authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAuthProvider: async (groupId: any, appId: any, providerId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetAuthProvider', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetAuthProvider', 'appId', appId)
            // verify required parameter 'providerId' is not null or undefined
            assertParamExists('adminGetAuthProvider', 'providerId', providerId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/auth_providers/{providerId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"providerId"}}`, encodeURIComponent(String(providerId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List [authentication providers](https://www.mongodb.com/docs/realm/authentication/) within a Atlas App Services App.
         * @summary List authentication providers in a Atlas App Services App
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListAuthProviders: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListAuthProviders', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListAuthProviders', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/auth_providers`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Update an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {any} body 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateAuthProvider: async (groupId: any, appId: any, providerId: any, body: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateAuthProvider', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateAuthProvider', 'appId', appId)
            // verify required parameter 'providerId' is not null or undefined
            assertParamExists('adminUpdateAuthProvider', 'providerId', providerId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('adminUpdateAuthProvider', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/auth_providers/{providerId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"providerId"}}`, encodeURIComponent(String(providerId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * AuthprovidersApi - functional programming interface
 * @export
 */
export const AuthprovidersApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = AuthprovidersApiAxiosParamCreator(configuration)
    return {
        /**
         * Create an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Create an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} body 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateAuthProvider(groupId: any, appId: any, body: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateAuthProvider(groupId, appId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Delete an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteAuthProvider(groupId, appId, providerId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Disable an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Disable an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDisableAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDisableAuthProvider(groupId, appId, providerId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Enable an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Enable an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminEnableAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminEnableAuthProvider(groupId, appId, providerId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Retrieve information about one of an application\'s [authentication providers](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Retrieve information about authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetAuthProvider(groupId, appId, providerId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List [authentication providers](https://www.mongodb.com/docs/realm/authentication/) within a Atlas App Services App.
         * @summary List authentication providers in a Atlas App Services App
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListAuthProviders(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListAuthProviders(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Update an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {any} body 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateAuthProvider(groupId: any, appId: any, providerId: any, body: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateAuthProvider(groupId, appId, providerId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * AuthprovidersApi - factory interface
 * @export
 */
export const AuthprovidersApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = AuthprovidersApiFp(configuration)
    return {
        /**
         * Create an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Create an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} body 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateAuthProvider(groupId: any, appId: any, body: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminCreateAuthProvider(groupId, appId, body, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Delete an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteAuthProvider(groupId: any, appId: any, providerId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteAuthProvider(groupId, appId, providerId, options).then((request) => request(axios, basePath));
        },
        /**
         * Disable an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Disable an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDisableAuthProvider(groupId: any, appId: any, providerId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDisableAuthProvider(groupId, appId, providerId, options).then((request) => request(axios, basePath));
        },
        /**
         * Enable an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Enable an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminEnableAuthProvider(groupId: any, appId: any, providerId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminEnableAuthProvider(groupId, appId, providerId, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve information about one of an application\'s [authentication providers](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Retrieve information about authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAuthProvider(groupId: any, appId: any, providerId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetAuthProvider(groupId, appId, providerId, options).then((request) => request(axios, basePath));
        },
        /**
         * List [authentication providers](https://www.mongodb.com/docs/realm/authentication/) within a Atlas App Services App.
         * @summary List authentication providers in a Atlas App Services App
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListAuthProviders(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListAuthProviders(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Update an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
         * @summary Update an authentication provider
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
         * @param {any} body 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateAuthProvider(groupId: any, appId: any, providerId: any, body: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminUpdateAuthProvider(groupId, appId, providerId, body, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * AuthprovidersApi - interface
 * @export
 * @interface AuthprovidersApi
 */
export interface AuthprovidersApiInterface {
    /**
     * Create an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Create an authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} body 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApiInterface
     */
    adminCreateAuthProvider(groupId: any, appId: any, body: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Delete an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Delete an authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApiInterface
     */
    adminDeleteAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Disable an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Disable an authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApiInterface
     */
    adminDisableAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Enable an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Enable an authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApiInterface
     */
    adminEnableAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Retrieve information about one of an application\'s [authentication providers](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Retrieve information about authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApiInterface
     */
    adminGetAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * List [authentication providers](https://www.mongodb.com/docs/realm/authentication/) within a Atlas App Services App.
     * @summary List authentication providers in a Atlas App Services App
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApiInterface
     */
    adminListAuthProviders(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Update an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Update an authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
     * @param {any} body 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApiInterface
     */
    adminUpdateAuthProvider(groupId: any, appId: any, providerId: any, body: any, options?: AxiosRequestConfig): AxiosPromise<void>;

}

/**
 * AuthprovidersApi - object-oriented interface
 * @export
 * @class AuthprovidersApi
 * @extends {BaseAPI}
 */
export class AuthprovidersApi extends BaseAPI implements AuthprovidersApiInterface {
    /**
     * Create an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Create an authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} body 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApi
     */
    public adminCreateAuthProvider(groupId: any, appId: any, body: any, options?: AxiosRequestConfig) {
        return AuthprovidersApiFp(this.configuration).adminCreateAuthProvider(groupId, appId, body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Delete an authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApi
     */
    public adminDeleteAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig) {
        return AuthprovidersApiFp(this.configuration).adminDeleteAuthProvider(groupId, appId, providerId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Disable an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Disable an authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApi
     */
    public adminDisableAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig) {
        return AuthprovidersApiFp(this.configuration).adminDisableAuthProvider(groupId, appId, providerId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Enable an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Enable an authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApi
     */
    public adminEnableAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig) {
        return AuthprovidersApiFp(this.configuration).adminEnableAuthProvider(groupId, appId, providerId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Retrieve information about one of an application\'s [authentication providers](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Retrieve information about authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApi
     */
    public adminGetAuthProvider(groupId: any, appId: any, providerId: any, options?: AxiosRequestConfig) {
        return AuthprovidersApiFp(this.configuration).adminGetAuthProvider(groupId, appId, providerId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List [authentication providers](https://www.mongodb.com/docs/realm/authentication/) within a Atlas App Services App.
     * @summary List authentication providers in a Atlas App Services App
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApi
     */
    public adminListAuthProviders(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return AuthprovidersApiFp(this.configuration).adminListAuthProviders(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update an [authentication provider](https://www.mongodb.com/docs/realm/authentication/).
     * @summary Update an authentication provider
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} providerId The unique &#x60;_id&#x60; value of an authentication provider
     * @param {any} body 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthprovidersApi
     */
    public adminUpdateAuthProvider(groupId: any, appId: any, providerId: any, body: any, options?: AxiosRequestConfig) {
        return AuthprovidersApiFp(this.configuration).adminUpdateAuthProvider(groupId, appId, providerId, body, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * BillingApi - axios parameter creator
 * @export
 */
export const BillingApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * List the request, compute, sync, data transfer, and memory usage of a specific app in a given period for [billing](https://www.mongodb.com/docs/realm/billing) purposes.
         * @summary List app billing usage
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [start] The ISO 8601 date and time of the start of the query period. Default is 00:00:00 UTC on the first day of the current month.
         * @param {any} [end] The ISO 8601 date and time of the end of the query period. Default is 23:59:59 UTC on the the last day of the current month.
         * @param {AdminAppMeasurementsGranularityEnum} [granularity] Specifies the granularity of the query period, either P31D (31 day) or PT1H (1 hour). Default is P31D.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminAppMeasurements: async (groupId: any, appId: any, start?: any, end?: any, granularity?: AdminAppMeasurementsGranularityEnum, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminAppMeasurements', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminAppMeasurements', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/measurements`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (start !== undefined) {
                localVarQueryParameter['start'] = start;
            }

            if (end !== undefined) {
                localVarQueryParameter['end'] = end;
            }

            if (granularity !== undefined) {
                localVarQueryParameter['granularity'] = granularity;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List the request, compute, sync, and data transfer usage in a given period for [billing](https://www.mongodb.com/docs/realm/billing) purposes.
         * @summary List group billing usage in a given period
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} [start] The ISO 8601 date and time of the start of the query period. Default is 00:00:00 UTC on the first day of the current month.
         * @param {any} [end] The ISO 8601 date and time of the end of the query period. Default is 23:59:59 UTC on the the last day of the current month.
         * @param {AdminMeasurementsGranularityEnum} [granularity] Specifies the granularity of the query period, either P31D (31 day) or PT1H (1 hour). Default is P31D.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminMeasurements: async (groupId: any, start?: any, end?: any, granularity?: AdminMeasurementsGranularityEnum, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminMeasurements', 'groupId', groupId)
            const localVarPath = `/groups/{groupId}/measurements`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (start !== undefined) {
                localVarQueryParameter['start'] = start;
            }

            if (end !== undefined) {
                localVarQueryParameter['end'] = end;
            }

            if (granularity !== undefined) {
                localVarQueryParameter['granularity'] = granularity;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * BillingApi - functional programming interface
 * @export
 */
export const BillingApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = BillingApiAxiosParamCreator(configuration)
    return {
        /**
         * List the request, compute, sync, data transfer, and memory usage of a specific app in a given period for [billing](https://www.mongodb.com/docs/realm/billing) purposes.
         * @summary List app billing usage
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [start] The ISO 8601 date and time of the start of the query period. Default is 00:00:00 UTC on the first day of the current month.
         * @param {any} [end] The ISO 8601 date and time of the end of the query period. Default is 23:59:59 UTC on the the last day of the current month.
         * @param {AdminAppMeasurementsGranularityEnum} [granularity] Specifies the granularity of the query period, either P31D (31 day) or PT1H (1 hour). Default is P31D.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminAppMeasurements(groupId: any, appId: any, start?: any, end?: any, granularity?: AdminAppMeasurementsGranularityEnum, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminAppMeasurements200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminAppMeasurements(groupId, appId, start, end, granularity, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List the request, compute, sync, and data transfer usage in a given period for [billing](https://www.mongodb.com/docs/realm/billing) purposes.
         * @summary List group billing usage in a given period
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} [start] The ISO 8601 date and time of the start of the query period. Default is 00:00:00 UTC on the first day of the current month.
         * @param {any} [end] The ISO 8601 date and time of the end of the query period. Default is 23:59:59 UTC on the the last day of the current month.
         * @param {AdminMeasurementsGranularityEnum} [granularity] Specifies the granularity of the query period, either P31D (31 day) or PT1H (1 hour). Default is P31D.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminMeasurements(groupId: any, start?: any, end?: any, granularity?: AdminMeasurementsGranularityEnum, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminMeasurements200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminMeasurements(groupId, start, end, granularity, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * BillingApi - factory interface
 * @export
 */
export const BillingApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = BillingApiFp(configuration)
    return {
        /**
         * List the request, compute, sync, data transfer, and memory usage of a specific app in a given period for [billing](https://www.mongodb.com/docs/realm/billing) purposes.
         * @summary List app billing usage
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [start] The ISO 8601 date and time of the start of the query period. Default is 00:00:00 UTC on the first day of the current month.
         * @param {any} [end] The ISO 8601 date and time of the end of the query period. Default is 23:59:59 UTC on the the last day of the current month.
         * @param {AdminAppMeasurementsGranularityEnum} [granularity] Specifies the granularity of the query period, either P31D (31 day) or PT1H (1 hour). Default is P31D.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminAppMeasurements(groupId: any, appId: any, start?: any, end?: any, granularity?: AdminAppMeasurementsGranularityEnum, options?: any): AxiosPromise<AdminAppMeasurements200Response> {
            return localVarFp.adminAppMeasurements(groupId, appId, start, end, granularity, options).then((request) => request(axios, basePath));
        },
        /**
         * List the request, compute, sync, and data transfer usage in a given period for [billing](https://www.mongodb.com/docs/realm/billing) purposes.
         * @summary List group billing usage in a given period
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} [start] The ISO 8601 date and time of the start of the query period. Default is 00:00:00 UTC on the first day of the current month.
         * @param {any} [end] The ISO 8601 date and time of the end of the query period. Default is 23:59:59 UTC on the the last day of the current month.
         * @param {AdminMeasurementsGranularityEnum} [granularity] Specifies the granularity of the query period, either P31D (31 day) or PT1H (1 hour). Default is P31D.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminMeasurements(groupId: any, start?: any, end?: any, granularity?: AdminMeasurementsGranularityEnum, options?: any): AxiosPromise<AdminMeasurements200Response> {
            return localVarFp.adminMeasurements(groupId, start, end, granularity, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * BillingApi - interface
 * @export
 * @interface BillingApi
 */
export interface BillingApiInterface {
    /**
     * List the request, compute, sync, data transfer, and memory usage of a specific app in a given period for [billing](https://www.mongodb.com/docs/realm/billing) purposes.
     * @summary List app billing usage
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [start] The ISO 8601 date and time of the start of the query period. Default is 00:00:00 UTC on the first day of the current month.
     * @param {any} [end] The ISO 8601 date and time of the end of the query period. Default is 23:59:59 UTC on the the last day of the current month.
     * @param {AdminAppMeasurementsGranularityEnum} [granularity] Specifies the granularity of the query period, either P31D (31 day) or PT1H (1 hour). Default is P31D.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof BillingApiInterface
     */
    adminAppMeasurements(groupId: any, appId: any, start?: any, end?: any, granularity?: AdminAppMeasurementsGranularityEnum, options?: AxiosRequestConfig): AxiosPromise<AdminAppMeasurements200Response>;

    /**
     * List the request, compute, sync, and data transfer usage in a given period for [billing](https://www.mongodb.com/docs/realm/billing) purposes.
     * @summary List group billing usage in a given period
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} [start] The ISO 8601 date and time of the start of the query period. Default is 00:00:00 UTC on the first day of the current month.
     * @param {any} [end] The ISO 8601 date and time of the end of the query period. Default is 23:59:59 UTC on the the last day of the current month.
     * @param {AdminMeasurementsGranularityEnum} [granularity] Specifies the granularity of the query period, either P31D (31 day) or PT1H (1 hour). Default is P31D.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof BillingApiInterface
     */
    adminMeasurements(groupId: any, start?: any, end?: any, granularity?: AdminMeasurementsGranularityEnum, options?: AxiosRequestConfig): AxiosPromise<AdminMeasurements200Response>;

}

/**
 * BillingApi - object-oriented interface
 * @export
 * @class BillingApi
 * @extends {BaseAPI}
 */
export class BillingApi extends BaseAPI implements BillingApiInterface {
    /**
     * List the request, compute, sync, data transfer, and memory usage of a specific app in a given period for [billing](https://www.mongodb.com/docs/realm/billing) purposes.
     * @summary List app billing usage
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [start] The ISO 8601 date and time of the start of the query period. Default is 00:00:00 UTC on the first day of the current month.
     * @param {any} [end] The ISO 8601 date and time of the end of the query period. Default is 23:59:59 UTC on the the last day of the current month.
     * @param {AdminAppMeasurementsGranularityEnum} [granularity] Specifies the granularity of the query period, either P31D (31 day) or PT1H (1 hour). Default is P31D.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof BillingApi
     */
    public adminAppMeasurements(groupId: any, appId: any, start?: any, end?: any, granularity?: AdminAppMeasurementsGranularityEnum, options?: AxiosRequestConfig) {
        return BillingApiFp(this.configuration).adminAppMeasurements(groupId, appId, start, end, granularity, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List the request, compute, sync, and data transfer usage in a given period for [billing](https://www.mongodb.com/docs/realm/billing) purposes.
     * @summary List group billing usage in a given period
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} [start] The ISO 8601 date and time of the start of the query period. Default is 00:00:00 UTC on the first day of the current month.
     * @param {any} [end] The ISO 8601 date and time of the end of the query period. Default is 23:59:59 UTC on the the last day of the current month.
     * @param {AdminMeasurementsGranularityEnum} [granularity] Specifies the granularity of the query period, either P31D (31 day) or PT1H (1 hour). Default is P31D.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof BillingApi
     */
    public adminMeasurements(groupId: any, start?: any, end?: any, granularity?: AdminMeasurementsGranularityEnum, options?: AxiosRequestConfig) {
        return BillingApiFp(this.configuration).adminMeasurements(groupId, start, end, granularity, options).then((request) => request(this.axios, this.basePath));
    }
}

/**
 * @export
 */
export const AdminAppMeasurementsGranularityEnum = {
    P31D: 'P31D',
    Pt1H: 'PT1H'
} as const;
export type AdminAppMeasurementsGranularityEnum = typeof AdminAppMeasurementsGranularityEnum[keyof typeof AdminAppMeasurementsGranularityEnum];
/**
 * @export
 */
export const AdminMeasurementsGranularityEnum = {
    P31D: 'P31D',
    Pt1H: 'PT1H'
} as const;
export type AdminMeasurementsGranularityEnum = typeof AdminMeasurementsGranularityEnum[keyof typeof AdminMeasurementsGranularityEnum];


/**
 * CustomUserDataApi - axios parameter creator
 * @export
 */
export const CustomUserDataApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Get the [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) configuration for an Atlas App Services App.
         * @summary Get the Custom User Data Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetCustomUserDataConfig: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetCustomUserDataConfig', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetCustomUserDataConfig', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/custom_user_data`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Modify the [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) configuration for an Atlas App Services App.
         * @summary Configure Custom User Data
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {CustomUserDataConfig} [customUserDataConfig] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetCustomUserDataConfig: async (groupId: any, appId: any, customUserDataConfig?: CustomUserDataConfig, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminSetCustomUserDataConfig', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminSetCustomUserDataConfig', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/custom_user_data`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(customUserDataConfig, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * CustomUserDataApi - functional programming interface
 * @export
 */
export const CustomUserDataApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = CustomUserDataApiAxiosParamCreator(configuration)
    return {
        /**
         * Get the [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) configuration for an Atlas App Services App.
         * @summary Get the Custom User Data Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetCustomUserDataConfig(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CustomUserDataConfig>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetCustomUserDataConfig(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Modify the [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) configuration for an Atlas App Services App.
         * @summary Configure Custom User Data
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {CustomUserDataConfig} [customUserDataConfig] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminSetCustomUserDataConfig(groupId: any, appId: any, customUserDataConfig?: CustomUserDataConfig, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminSetCustomUserDataConfig(groupId, appId, customUserDataConfig, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * CustomUserDataApi - factory interface
 * @export
 */
export const CustomUserDataApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = CustomUserDataApiFp(configuration)
    return {
        /**
         * Get the [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) configuration for an Atlas App Services App.
         * @summary Get the Custom User Data Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetCustomUserDataConfig(groupId: any, appId: any, options?: any): AxiosPromise<CustomUserDataConfig> {
            return localVarFp.adminGetCustomUserDataConfig(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Modify the [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) configuration for an Atlas App Services App.
         * @summary Configure Custom User Data
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {CustomUserDataConfig} [customUserDataConfig] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetCustomUserDataConfig(groupId: any, appId: any, customUserDataConfig?: CustomUserDataConfig, options?: any): AxiosPromise<void> {
            return localVarFp.adminSetCustomUserDataConfig(groupId, appId, customUserDataConfig, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * CustomUserDataApi - interface
 * @export
 * @interface CustomUserDataApi
 */
export interface CustomUserDataApiInterface {
    /**
     * Get the [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) configuration for an Atlas App Services App.
     * @summary Get the Custom User Data Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CustomUserDataApiInterface
     */
    adminGetCustomUserDataConfig(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<CustomUserDataConfig>;

    /**
     * Modify the [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) configuration for an Atlas App Services App.
     * @summary Configure Custom User Data
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {CustomUserDataConfig} [customUserDataConfig] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CustomUserDataApiInterface
     */
    adminSetCustomUserDataConfig(groupId: any, appId: any, customUserDataConfig?: CustomUserDataConfig, options?: AxiosRequestConfig): AxiosPromise<void>;

}

/**
 * CustomUserDataApi - object-oriented interface
 * @export
 * @class CustomUserDataApi
 * @extends {BaseAPI}
 */
export class CustomUserDataApi extends BaseAPI implements CustomUserDataApiInterface {
    /**
     * Get the [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) configuration for an Atlas App Services App.
     * @summary Get the Custom User Data Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CustomUserDataApi
     */
    public adminGetCustomUserDataConfig(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return CustomUserDataApiFp(this.configuration).adminGetCustomUserDataConfig(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Modify the [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) configuration for an Atlas App Services App.
     * @summary Configure Custom User Data
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {CustomUserDataConfig} [customUserDataConfig] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CustomUserDataApi
     */
    public adminSetCustomUserDataConfig(groupId: any, appId: any, customUserDataConfig?: CustomUserDataConfig, options?: AxiosRequestConfig) {
        return CustomUserDataApiFp(this.configuration).adminSetCustomUserDataConfig(groupId, appId, customUserDataConfig, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * DataApiApi - axios parameter creator
 * @export
 */
export const DataApiApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
         * @summary Enable the Data API
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {DataApiConfig} dataApiConfig A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints#std-label-appconfig-data-api-endpoints) for the endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateDataApiConfig: async (groupId: any, appId: any, dataApiConfig: DataApiConfig, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateDataApiConfig', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateDataApiConfig', 'appId', appId)
            // verify required parameter 'dataApiConfig' is not null or undefined
            assertParamExists('adminCreateDataApiConfig', 'dataApiConfig', dataApiConfig)
            const localVarPath = `/groups/{groupId}/apps/{appId}/data_api/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(dataApiConfig, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
         * @summary Get the Data API Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDataApiConfig: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetDataApiConfig', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetDataApiConfig', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/data_api/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List all possible Data API versions.
         * @summary List Data API versions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDataApiVersions: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetDataApiVersions', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetDataApiVersions', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/data_api/versions`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
         * @summary Modify the Data API
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {DataApiConfig} dataApiConfig A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints#std-label-appconfig-data-api-endpoints) for the endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminModifyDataApiConfig: async (groupId: any, appId: any, dataApiConfig: DataApiConfig, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminModifyDataApiConfig', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminModifyDataApiConfig', 'appId', appId)
            // verify required parameter 'dataApiConfig' is not null or undefined
            assertParamExists('adminModifyDataApiConfig', 'dataApiConfig', dataApiConfig)
            const localVarPath = `/groups/{groupId}/apps/{appId}/data_api/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(dataApiConfig, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * DataApiApi - functional programming interface
 * @export
 */
export const DataApiApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = DataApiApiAxiosParamCreator(configuration)
    return {
        /**
         * Create your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
         * @summary Enable the Data API
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {DataApiConfig} dataApiConfig A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints#std-label-appconfig-data-api-endpoints) for the endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateDataApiConfig(groupId: any, appId: any, dataApiConfig: DataApiConfig, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DataApiConfig>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateDataApiConfig(groupId, appId, dataApiConfig, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
         * @summary Get the Data API Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetDataApiConfig(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DataApiConfig>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetDataApiConfig(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List all possible Data API versions.
         * @summary List Data API versions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetDataApiVersions(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetDataApiVersions(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
         * @summary Modify the Data API
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {DataApiConfig} dataApiConfig A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints#std-label-appconfig-data-api-endpoints) for the endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminModifyDataApiConfig(groupId: any, appId: any, dataApiConfig: DataApiConfig, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminModifyDataApiConfig(groupId, appId, dataApiConfig, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * DataApiApi - factory interface
 * @export
 */
export const DataApiApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = DataApiApiFp(configuration)
    return {
        /**
         * Create your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
         * @summary Enable the Data API
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {DataApiConfig} dataApiConfig A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints#std-label-appconfig-data-api-endpoints) for the endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateDataApiConfig(groupId: any, appId: any, dataApiConfig: DataApiConfig, options?: any): AxiosPromise<DataApiConfig> {
            return localVarFp.adminCreateDataApiConfig(groupId, appId, dataApiConfig, options).then((request) => request(axios, basePath));
        },
        /**
         * Get your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
         * @summary Get the Data API Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDataApiConfig(groupId: any, appId: any, options?: any): AxiosPromise<DataApiConfig> {
            return localVarFp.adminGetDataApiConfig(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * List all possible Data API versions.
         * @summary List Data API versions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDataApiVersions(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetDataApiVersions(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Update your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
         * @summary Modify the Data API
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {DataApiConfig} dataApiConfig A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints#std-label-appconfig-data-api-endpoints) for the endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminModifyDataApiConfig(groupId: any, appId: any, dataApiConfig: DataApiConfig, options?: any): AxiosPromise<void> {
            return localVarFp.adminModifyDataApiConfig(groupId, appId, dataApiConfig, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * DataApiApi - interface
 * @export
 * @interface DataApiApi
 */
export interface DataApiApiInterface {
    /**
     * Create your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
     * @summary Enable the Data API
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {DataApiConfig} dataApiConfig A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints#std-label-appconfig-data-api-endpoints) for the endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DataApiApiInterface
     */
    adminCreateDataApiConfig(groupId: any, appId: any, dataApiConfig: DataApiConfig, options?: AxiosRequestConfig): AxiosPromise<DataApiConfig>;

    /**
     * Get your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
     * @summary Get the Data API Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DataApiApiInterface
     */
    adminGetDataApiConfig(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<DataApiConfig>;

    /**
     * List all possible Data API versions.
     * @summary List Data API versions
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DataApiApiInterface
     */
    adminGetDataApiVersions(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Update your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
     * @summary Modify the Data API
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {DataApiConfig} dataApiConfig A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints#std-label-appconfig-data-api-endpoints) for the endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DataApiApiInterface
     */
    adminModifyDataApiConfig(groupId: any, appId: any, dataApiConfig: DataApiConfig, options?: AxiosRequestConfig): AxiosPromise<void>;

}

/**
 * DataApiApi - object-oriented interface
 * @export
 * @class DataApiApi
 * @extends {BaseAPI}
 */
export class DataApiApi extends BaseAPI implements DataApiApiInterface {
    /**
     * Create your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
     * @summary Enable the Data API
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {DataApiConfig} dataApiConfig A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints#std-label-appconfig-data-api-endpoints) for the endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DataApiApi
     */
    public adminCreateDataApiConfig(groupId: any, appId: any, dataApiConfig: DataApiConfig, options?: AxiosRequestConfig) {
        return DataApiApiFp(this.configuration).adminCreateDataApiConfig(groupId, appId, dataApiConfig, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
     * @summary Get the Data API Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DataApiApi
     */
    public adminGetDataApiConfig(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return DataApiApiFp(this.configuration).adminGetDataApiConfig(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List all possible Data API versions.
     * @summary List Data API versions
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DataApiApi
     */
    public adminGetDataApiVersions(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return DataApiApiFp(this.configuration).adminGetDataApiVersions(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update your app\'s [Data API](https://www.mongodb.com/docs/atlas/app-services/data-api/generated-endpoints/) configuration.
     * @summary Modify the Data API
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {DataApiConfig} dataApiConfig A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints#std-label-appconfig-data-api-endpoints) for the endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DataApiApi
     */
    public adminModifyDataApiConfig(groupId: any, appId: any, dataApiConfig: DataApiConfig, options?: AxiosRequestConfig) {
        return DataApiApiFp(this.configuration).adminModifyDataApiConfig(groupId, appId, dataApiConfig, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * DependenciesApi - axios parameter creator
 * @export
 */
export const DependenciesApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * List [external dependencies](https://www.mongodb.com/docs/realm/functions/dependencies/) uploaded to the Atlas App Services App.
         * @summary List external dependencies
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAllDependencies: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetAllDependencies', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetAllDependencies', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/dependencies`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * DependenciesApi - functional programming interface
 * @export
 */
export const DependenciesApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = DependenciesApiAxiosParamCreator(configuration)
    return {
        /**
         * List [external dependencies](https://www.mongodb.com/docs/realm/functions/dependencies/) uploaded to the Atlas App Services App.
         * @summary List external dependencies
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetAllDependencies(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DependenciesSummary>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetAllDependencies(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * DependenciesApi - factory interface
 * @export
 */
export const DependenciesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = DependenciesApiFp(configuration)
    return {
        /**
         * List [external dependencies](https://www.mongodb.com/docs/realm/functions/dependencies/) uploaded to the Atlas App Services App.
         * @summary List external dependencies
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAllDependencies(groupId: any, appId: any, options?: any): AxiosPromise<DependenciesSummary> {
            return localVarFp.adminGetAllDependencies(groupId, appId, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * DependenciesApi - interface
 * @export
 * @interface DependenciesApi
 */
export interface DependenciesApiInterface {
    /**
     * List [external dependencies](https://www.mongodb.com/docs/realm/functions/dependencies/) uploaded to the Atlas App Services App.
     * @summary List external dependencies
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DependenciesApiInterface
     */
    adminGetAllDependencies(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<DependenciesSummary>;

}

/**
 * DependenciesApi - object-oriented interface
 * @export
 * @class DependenciesApi
 * @extends {BaseAPI}
 */
export class DependenciesApi extends BaseAPI implements DependenciesApiInterface {
    /**
     * List [external dependencies](https://www.mongodb.com/docs/realm/functions/dependencies/) uploaded to the Atlas App Services App.
     * @summary List external dependencies
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DependenciesApi
     */
    public adminGetAllDependencies(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return DependenciesApiFp(this.configuration).adminGetAllDependencies(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * DeployApi - axios parameter creator
 * @export
 */
export const DeployApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Modify an App\'s deployment configuration to customize how the App deploys changes.
         * @summary Configure Deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {DeploymentConfig} [deploymentConfig] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminConfigureDeployment: async (groupId: any, appId: any, deploymentConfig?: DeploymentConfig, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminConfigureDeployment', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminConfigureDeployment', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/deploy/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(deploymentConfig, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Create a new application deployment draft, if none exists.
         * @summary Create a Deployment Draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateDeploymentDraft: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateDeploymentDraft', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateDeploymentDraft', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/drafts`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Start a new deployment migration.
         * @summary Create a Deployment Migration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AppDeploymentSettings} appDeploymentSettings The deployment model and cloud provider region that the App should migrate to.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateDeploymentMigration: async (groupId: any, appId: any, appDeploymentSettings: AppDeploymentSettings, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateDeploymentMigration', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateDeploymentMigration', 'appId', appId)
            // verify required parameter 'appDeploymentSettings' is not null or undefined
            assertParamExists('adminCreateDeploymentMigration', 'appDeploymentSettings', appDeploymentSettings)
            const localVarPath = `/groups/{groupId}/apps/{appId}/deployment_migration`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(appDeploymentSettings, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Deploy the specified application deployment draft.
         * @summary Deploy a deployment draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
         * @param {AdminDeployDraftRequest} [adminDeployDraftRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeployDraft: async (groupId: any, appId: any, draftId: any, adminDeployDraftRequest?: AdminDeployDraftRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeployDraft', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeployDraft', 'appId', appId)
            // verify required parameter 'draftId' is not null or undefined
            assertParamExists('adminDeployDraft', 'draftId', draftId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/drafts/{draftId}/deployment`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"draftId"}}`, encodeURIComponent(String(draftId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminDeployDraftRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return a diff between the currently deployed application and the specified draft.
         * @summary Diff a draft with the current deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeployDraftDiff: async (groupId: any, appId: any, draftId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeployDraftDiff', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeployDraftDiff', 'appId', appId)
            // verify required parameter 'draftId' is not null or undefined
            assertParamExists('adminDeployDraftDiff', 'draftId', draftId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/drafts/{draftId}/diff`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"draftId"}}`, encodeURIComponent(String(draftId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Discard the specified application deployment draft.
         * @summary Discard the specified deployment draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDiscardDraft: async (groupId: any, appId: any, draftId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDiscardDraft', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDiscardDraft', 'appId', appId)
            // verify required parameter 'draftId' is not null or undefined
            assertParamExists('adminDiscardDraft', 'draftId', draftId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/drafts/{draftId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"draftId"}}`, encodeURIComponent(String(draftId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get information about a recent deployment of the application.
         * @summary Get a deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} deploymentId The &#x60;_id&#x60; value of an application deployment.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDeployment: async (groupId: any, appId: any, deploymentId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetDeployment', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetDeployment', 'appId', appId)
            // verify required parameter 'deploymentId' is not null or undefined
            assertParamExists('adminGetDeployment', 'deploymentId', deploymentId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/deployments/{deploymentId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"deploymentId"}}`, encodeURIComponent(String(deploymentId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * See information about how your App deploys changes.
         * @summary Get the Deployment Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDeploymentConfig: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetDeploymentConfig', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetDeploymentConfig', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/deploy/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get metadata and status for the current deployment migration, if one exists.
         * @summary Get a Deployment Migration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDeploymentMigration: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetDeploymentMigration', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetDeploymentMigration', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/deployment_migration`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return a list of all supported cloud regions in which you can deploy an Atlas App.
         * @summary List all available Atlas App cloud regions
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListAppRegions: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            const localVarPath = `/provider_regions`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the current application deployment draft, if applicable.
         * @summary Get Current Deployment Draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListDeploymentDrafts: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListDeploymentDrafts', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListDeploymentDrafts', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/drafts`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the 25 most recent application deployments.
         * @summary List recent deployments
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListDeployments: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListDeployments', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListDeployments', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/deployments`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Redeploy a previously-deployed version of an App.
         * @summary Redeploy a Deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} deploymentId The &#x60;_id&#x60; value of an application deployment.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminRedeployDeployment: async (groupId: any, appId: any, deploymentId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminRedeployDeployment', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminRedeployDeployment', 'appId', appId)
            // verify required parameter 'deploymentId' is not null or undefined
            assertParamExists('adminRedeployDeployment', 'deploymentId', deploymentId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/deployments/{deploymentId}/redeploy`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"deploymentId"}}`, encodeURIComponent(String(deploymentId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * DeployApi - functional programming interface
 * @export
 */
export const DeployApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = DeployApiAxiosParamCreator(configuration)
    return {
        /**
         * Modify an App\'s deployment configuration to customize how the App deploys changes.
         * @summary Configure Deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {DeploymentConfig} [deploymentConfig] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminConfigureDeployment(groupId: any, appId: any, deploymentConfig?: DeploymentConfig, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminConfigureDeployment(groupId, appId, deploymentConfig, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Create a new application deployment draft, if none exists.
         * @summary Create a Deployment Draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateDeploymentDraft(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeploymentDraft>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateDeploymentDraft(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Start a new deployment migration.
         * @summary Create a Deployment Migration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AppDeploymentSettings} appDeploymentSettings The deployment model and cloud provider region that the App should migrate to.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateDeploymentMigration(groupId: any, appId: any, appDeploymentSettings: AppDeploymentSettings, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateDeploymentMigration(groupId, appId, appDeploymentSettings, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Deploy the specified application deployment draft.
         * @summary Deploy a deployment draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
         * @param {AdminDeployDraftRequest} [adminDeployDraftRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeployDraft(groupId: any, appId: any, draftId: any, adminDeployDraftRequest?: AdminDeployDraftRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Deployment>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeployDraft(groupId, appId, draftId, adminDeployDraftRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Return a diff between the currently deployed application and the specified draft.
         * @summary Diff a draft with the current deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeployDraftDiff(groupId: any, appId: any, draftId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Diff>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeployDraftDiff(groupId, appId, draftId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Discard the specified application deployment draft.
         * @summary Discard the specified deployment draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDiscardDraft(groupId: any, appId: any, draftId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDiscardDraft(groupId, appId, draftId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get information about a recent deployment of the application.
         * @summary Get a deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} deploymentId The &#x60;_id&#x60; value of an application deployment.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetDeployment(groupId: any, appId: any, deploymentId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Deployment>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetDeployment(groupId, appId, deploymentId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * See information about how your App deploys changes.
         * @summary Get the Deployment Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetDeploymentConfig(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeploymentConfig>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetDeploymentConfig(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get metadata and status for the current deployment migration, if one exists.
         * @summary Get a Deployment Migration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetDeploymentMigration(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeploymentMigration>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetDeploymentMigration(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Return a list of all supported cloud regions in which you can deploy an Atlas App.
         * @summary List all available Atlas App cloud regions
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListAppRegions(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListAppRegions(options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Return the current application deployment draft, if applicable.
         * @summary Get Current Deployment Draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListDeploymentDrafts(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeploymentDraft>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListDeploymentDrafts(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Return the 25 most recent application deployments.
         * @summary List recent deployments
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListDeployments(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListDeployments(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Redeploy a previously-deployed version of an App.
         * @summary Redeploy a Deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} deploymentId The &#x60;_id&#x60; value of an application deployment.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminRedeployDeployment(groupId: any, appId: any, deploymentId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminRedeployDeployment(groupId, appId, deploymentId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * DeployApi - factory interface
 * @export
 */
export const DeployApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = DeployApiFp(configuration)
    return {
        /**
         * Modify an App\'s deployment configuration to customize how the App deploys changes.
         * @summary Configure Deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {DeploymentConfig} [deploymentConfig] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminConfigureDeployment(groupId: any, appId: any, deploymentConfig?: DeploymentConfig, options?: any): AxiosPromise<void> {
            return localVarFp.adminConfigureDeployment(groupId, appId, deploymentConfig, options).then((request) => request(axios, basePath));
        },
        /**
         * Create a new application deployment draft, if none exists.
         * @summary Create a Deployment Draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateDeploymentDraft(groupId: any, appId: any, options?: any): AxiosPromise<DeploymentDraft> {
            return localVarFp.adminCreateDeploymentDraft(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Start a new deployment migration.
         * @summary Create a Deployment Migration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AppDeploymentSettings} appDeploymentSettings The deployment model and cloud provider region that the App should migrate to.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateDeploymentMigration(groupId: any, appId: any, appDeploymentSettings: AppDeploymentSettings, options?: any): AxiosPromise<void> {
            return localVarFp.adminCreateDeploymentMigration(groupId, appId, appDeploymentSettings, options).then((request) => request(axios, basePath));
        },
        /**
         * Deploy the specified application deployment draft.
         * @summary Deploy a deployment draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
         * @param {AdminDeployDraftRequest} [adminDeployDraftRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeployDraft(groupId: any, appId: any, draftId: any, adminDeployDraftRequest?: AdminDeployDraftRequest, options?: any): AxiosPromise<Deployment> {
            return localVarFp.adminDeployDraft(groupId, appId, draftId, adminDeployDraftRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Return a diff between the currently deployed application and the specified draft.
         * @summary Diff a draft with the current deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeployDraftDiff(groupId: any, appId: any, draftId: any, options?: any): AxiosPromise<Diff> {
            return localVarFp.adminDeployDraftDiff(groupId, appId, draftId, options).then((request) => request(axios, basePath));
        },
        /**
         * Discard the specified application deployment draft.
         * @summary Discard the specified deployment draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDiscardDraft(groupId: any, appId: any, draftId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDiscardDraft(groupId, appId, draftId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get information about a recent deployment of the application.
         * @summary Get a deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} deploymentId The &#x60;_id&#x60; value of an application deployment.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDeployment(groupId: any, appId: any, deploymentId: any, options?: any): AxiosPromise<Deployment> {
            return localVarFp.adminGetDeployment(groupId, appId, deploymentId, options).then((request) => request(axios, basePath));
        },
        /**
         * See information about how your App deploys changes.
         * @summary Get the Deployment Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDeploymentConfig(groupId: any, appId: any, options?: any): AxiosPromise<DeploymentConfig> {
            return localVarFp.adminGetDeploymentConfig(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get metadata and status for the current deployment migration, if one exists.
         * @summary Get a Deployment Migration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDeploymentMigration(groupId: any, appId: any, options?: any): AxiosPromise<DeploymentMigration> {
            return localVarFp.adminGetDeploymentMigration(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Return a list of all supported cloud regions in which you can deploy an Atlas App.
         * @summary List all available Atlas App cloud regions
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListAppRegions(options?: any): AxiosPromise<any> {
            return localVarFp.adminListAppRegions(options).then((request) => request(axios, basePath));
        },
        /**
         * Return the current application deployment draft, if applicable.
         * @summary Get Current Deployment Draft
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListDeploymentDrafts(groupId: any, appId: any, options?: any): AxiosPromise<DeploymentDraft> {
            return localVarFp.adminListDeploymentDrafts(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Return the 25 most recent application deployments.
         * @summary List recent deployments
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListDeployments(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListDeployments(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Redeploy a previously-deployed version of an App.
         * @summary Redeploy a Deployment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} deploymentId The &#x60;_id&#x60; value of an application deployment.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminRedeployDeployment(groupId: any, appId: any, deploymentId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminRedeployDeployment(groupId, appId, deploymentId, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * DeployApi - interface
 * @export
 * @interface DeployApi
 */
export interface DeployApiInterface {
    /**
     * Modify an App\'s deployment configuration to customize how the App deploys changes.
     * @summary Configure Deployment
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {DeploymentConfig} [deploymentConfig] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminConfigureDeployment(groupId: any, appId: any, deploymentConfig?: DeploymentConfig, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Create a new application deployment draft, if none exists.
     * @summary Create a Deployment Draft
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminCreateDeploymentDraft(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<DeploymentDraft>;

    /**
     * Start a new deployment migration.
     * @summary Create a Deployment Migration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AppDeploymentSettings} appDeploymentSettings The deployment model and cloud provider region that the App should migrate to.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminCreateDeploymentMigration(groupId: any, appId: any, appDeploymentSettings: AppDeploymentSettings, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Deploy the specified application deployment draft.
     * @summary Deploy a deployment draft
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
     * @param {AdminDeployDraftRequest} [adminDeployDraftRequest] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminDeployDraft(groupId: any, appId: any, draftId: any, adminDeployDraftRequest?: AdminDeployDraftRequest, options?: AxiosRequestConfig): AxiosPromise<Deployment>;

    /**
     * Return a diff between the currently deployed application and the specified draft.
     * @summary Diff a draft with the current deployment
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminDeployDraftDiff(groupId: any, appId: any, draftId: any, options?: AxiosRequestConfig): AxiosPromise<Diff>;

    /**
     * Discard the specified application deployment draft.
     * @summary Discard the specified deployment draft
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminDiscardDraft(groupId: any, appId: any, draftId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Get information about a recent deployment of the application.
     * @summary Get a deployment
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} deploymentId The &#x60;_id&#x60; value of an application deployment.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminGetDeployment(groupId: any, appId: any, deploymentId: any, options?: AxiosRequestConfig): AxiosPromise<Deployment>;

    /**
     * See information about how your App deploys changes.
     * @summary Get the Deployment Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminGetDeploymentConfig(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<DeploymentConfig>;

    /**
     * Get metadata and status for the current deployment migration, if one exists.
     * @summary Get a Deployment Migration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminGetDeploymentMigration(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<DeploymentMigration>;

    /**
     * Return a list of all supported cloud regions in which you can deploy an Atlas App.
     * @summary List all available Atlas App cloud regions
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminListAppRegions(options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Return the current application deployment draft, if applicable.
     * @summary Get Current Deployment Draft
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminListDeploymentDrafts(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<DeploymentDraft>;

    /**
     * Return the 25 most recent application deployments.
     * @summary List recent deployments
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminListDeployments(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Redeploy a previously-deployed version of an App.
     * @summary Redeploy a Deployment
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} deploymentId The &#x60;_id&#x60; value of an application deployment.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApiInterface
     */
    adminRedeployDeployment(groupId: any, appId: any, deploymentId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

}

/**
 * DeployApi - object-oriented interface
 * @export
 * @class DeployApi
 * @extends {BaseAPI}
 */
export class DeployApi extends BaseAPI implements DeployApiInterface {
    /**
     * Modify an App\'s deployment configuration to customize how the App deploys changes.
     * @summary Configure Deployment
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {DeploymentConfig} [deploymentConfig] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminConfigureDeployment(groupId: any, appId: any, deploymentConfig?: DeploymentConfig, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminConfigureDeployment(groupId, appId, deploymentConfig, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Create a new application deployment draft, if none exists.
     * @summary Create a Deployment Draft
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminCreateDeploymentDraft(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminCreateDeploymentDraft(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Start a new deployment migration.
     * @summary Create a Deployment Migration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AppDeploymentSettings} appDeploymentSettings The deployment model and cloud provider region that the App should migrate to.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminCreateDeploymentMigration(groupId: any, appId: any, appDeploymentSettings: AppDeploymentSettings, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminCreateDeploymentMigration(groupId, appId, appDeploymentSettings, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Deploy the specified application deployment draft.
     * @summary Deploy a deployment draft
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
     * @param {AdminDeployDraftRequest} [adminDeployDraftRequest] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminDeployDraft(groupId: any, appId: any, draftId: any, adminDeployDraftRequest?: AdminDeployDraftRequest, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminDeployDraft(groupId, appId, draftId, adminDeployDraftRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Return a diff between the currently deployed application and the specified draft.
     * @summary Diff a draft with the current deployment
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminDeployDraftDiff(groupId: any, appId: any, draftId: any, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminDeployDraftDiff(groupId, appId, draftId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Discard the specified application deployment draft.
     * @summary Discard the specified deployment draft
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} draftId The unique &#x60;_id&#x60; value of a draft.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminDiscardDraft(groupId: any, appId: any, draftId: any, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminDiscardDraft(groupId, appId, draftId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get information about a recent deployment of the application.
     * @summary Get a deployment
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} deploymentId The &#x60;_id&#x60; value of an application deployment.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminGetDeployment(groupId: any, appId: any, deploymentId: any, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminGetDeployment(groupId, appId, deploymentId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * See information about how your App deploys changes.
     * @summary Get the Deployment Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminGetDeploymentConfig(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminGetDeploymentConfig(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get metadata and status for the current deployment migration, if one exists.
     * @summary Get a Deployment Migration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminGetDeploymentMigration(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminGetDeploymentMigration(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Return a list of all supported cloud regions in which you can deploy an Atlas App.
     * @summary List all available Atlas App cloud regions
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminListAppRegions(options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminListAppRegions(options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Return the current application deployment draft, if applicable.
     * @summary Get Current Deployment Draft
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminListDeploymentDrafts(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminListDeploymentDrafts(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Return the 25 most recent application deployments.
     * @summary List recent deployments
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminListDeployments(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminListDeployments(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Redeploy a previously-deployed version of an App.
     * @summary Redeploy a Deployment
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} deploymentId The &#x60;_id&#x60; value of an application deployment.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeployApi
     */
    public adminRedeployDeployment(groupId: any, appId: any, deploymentId: any, options?: AxiosRequestConfig) {
        return DeployApiFp(this.configuration).adminRedeployDeployment(groupId, appId, deploymentId, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * EmailApi - axios parameter creator
 * @export
 */
export const EmailApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Confirm a pending [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Confirm a pending user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminConfirmPendingUser: async (groupId: any, appId: any, email: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminConfirmPendingUser', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminConfirmPendingUser', 'appId', appId)
            // verify required parameter 'email' is not null or undefined
            assertParamExists('adminConfirmPendingUser', 'email', email)
            const localVarPath = `/groups/{groupId}/apps/{appId}/user_registrations/by_email/{email}/confirm`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"email"}}`, encodeURIComponent(String(email)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Reruns a pending user\'s [confirmation workflow](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Rerun a user confirmation workflow
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminRerunPendingUserConfirmation: async (groupId: any, appId: any, email: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminRerunPendingUserConfirmation', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminRerunPendingUserConfirmation', 'appId', appId)
            // verify required parameter 'email' is not null or undefined
            assertParamExists('adminRerunPendingUserConfirmation', 'email', email)
            const localVarPath = `/groups/{groupId}/apps/{appId}/user_registrations/by_email/{email}/run_confirm`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"email"}}`, encodeURIComponent(String(email)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Send a [confirmation email](https://www.mongodb.com/docs/realm/authentication/email-password/).
         * @summary Send a confirmation email
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSendConfirmationEmail: async (groupId: any, appId: any, email: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminSendConfirmationEmail', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminSendConfirmationEmail', 'appId', appId)
            // verify required parameter 'email' is not null or undefined
            assertParamExists('adminSendConfirmationEmail', 'email', email)
            const localVarPath = `/groups/{groupId}/apps/{appId}/user_registrations/by_email/{email}/send_confirm`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"email"}}`, encodeURIComponent(String(email)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * EmailApi - functional programming interface
 * @export
 */
export const EmailApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = EmailApiAxiosParamCreator(configuration)
    return {
        /**
         * Confirm a pending [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Confirm a pending user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminConfirmPendingUser(groupId: any, appId: any, email: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminConfirmPendingUser(groupId, appId, email, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Reruns a pending user\'s [confirmation workflow](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Rerun a user confirmation workflow
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminRerunPendingUserConfirmation(groupId: any, appId: any, email: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminRerunPendingUserConfirmation(groupId, appId, email, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Send a [confirmation email](https://www.mongodb.com/docs/realm/authentication/email-password/).
         * @summary Send a confirmation email
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminSendConfirmationEmail(groupId: any, appId: any, email: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminSendConfirmationEmail(groupId, appId, email, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * EmailApi - factory interface
 * @export
 */
export const EmailApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = EmailApiFp(configuration)
    return {
        /**
         * Confirm a pending [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Confirm a pending user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminConfirmPendingUser(groupId: any, appId: any, email: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminConfirmPendingUser(groupId, appId, email, options).then((request) => request(axios, basePath));
        },
        /**
         * Reruns a pending user\'s [confirmation workflow](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Rerun a user confirmation workflow
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminRerunPendingUserConfirmation(groupId: any, appId: any, email: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminRerunPendingUserConfirmation(groupId, appId, email, options).then((request) => request(axios, basePath));
        },
        /**
         * Send a [confirmation email](https://www.mongodb.com/docs/realm/authentication/email-password/).
         * @summary Send a confirmation email
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSendConfirmationEmail(groupId: any, appId: any, email: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminSendConfirmationEmail(groupId, appId, email, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * EmailApi - interface
 * @export
 * @interface EmailApi
 */
export interface EmailApiInterface {
    /**
     * Confirm a pending [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
     * @summary Confirm a pending user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} email Email address
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmailApiInterface
     */
    adminConfirmPendingUser(groupId: any, appId: any, email: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Reruns a pending user\'s [confirmation workflow](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
     * @summary Rerun a user confirmation workflow
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} email Email address
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmailApiInterface
     */
    adminRerunPendingUserConfirmation(groupId: any, appId: any, email: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Send a [confirmation email](https://www.mongodb.com/docs/realm/authentication/email-password/).
     * @summary Send a confirmation email
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} email Email address
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmailApiInterface
     */
    adminSendConfirmationEmail(groupId: any, appId: any, email: any, options?: AxiosRequestConfig): AxiosPromise<void>;

}

/**
 * EmailApi - object-oriented interface
 * @export
 * @class EmailApi
 * @extends {BaseAPI}
 */
export class EmailApi extends BaseAPI implements EmailApiInterface {
    /**
     * Confirm a pending [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
     * @summary Confirm a pending user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} email Email address
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmailApi
     */
    public adminConfirmPendingUser(groupId: any, appId: any, email: any, options?: AxiosRequestConfig) {
        return EmailApiFp(this.configuration).adminConfirmPendingUser(groupId, appId, email, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Reruns a pending user\'s [confirmation workflow](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
     * @summary Rerun a user confirmation workflow
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} email Email address
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmailApi
     */
    public adminRerunPendingUserConfirmation(groupId: any, appId: any, email: any, options?: AxiosRequestConfig) {
        return EmailApiFp(this.configuration).adminRerunPendingUserConfirmation(groupId, appId, email, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Send a [confirmation email](https://www.mongodb.com/docs/realm/authentication/email-password/).
     * @summary Send a confirmation email
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} email Email address
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmailApi
     */
    public adminSendConfirmationEmail(groupId: any, appId: any, email: any, options?: AxiosRequestConfig) {
        return EmailApiFp(this.configuration).adminSendConfirmationEmail(groupId, appId, email, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * EndpointsApi - axios parameter creator
 * @export
 */
export const EndpointsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create a new [endpoint](https://www.mongodb.com/docs/realm/endpoints/).
         * @summary Create an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {Endpoint} endpoint A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints/) for the new endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateEndpoint: async (groupId: any, appId: any, endpoint: Endpoint, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateEndpoint', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateEndpoint', 'appId', appId)
            // verify required parameter 'endpoint' is not null or undefined
            assertParamExists('adminCreateEndpoint', 'endpoint', endpoint)
            const localVarPath = `/groups/{groupId}/apps/{appId}/endpoints`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(endpoint, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Delete an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteEndpoint: async (groupId: any, appId: any, endpointId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteEndpoint', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteEndpoint', 'appId', appId)
            // verify required parameter 'endpointId' is not null or undefined
            assertParamExists('adminDeleteEndpoint', 'endpointId', endpointId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/endpoints/{endpointId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"endpointId"}}`, encodeURIComponent(String(endpointId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get all [endpoint](https://www.mongodb.com/docs/realm/endpoints/) configurations.
         * @summary Get all endpoints
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAllEndpoints: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetAllEndpoints', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetAllEndpoints', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/endpoints`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get a specific [endpoint](https://www.mongodb.com/docs/realm/endpoints/)\'s configuration.
         * @summary Get an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetEndpoint: async (groupId: any, appId: any, endpointId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetEndpoint', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetEndpoint', 'appId', appId)
            // verify required parameter 'endpointId' is not null or undefined
            assertParamExists('adminGetEndpoint', 'endpointId', endpointId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/endpoints/{endpointId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"endpointId"}}`, encodeURIComponent(String(endpointId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Modify an existing [endpoint](https://www.mongodb.com/docs/realm/endpoints/) configuration.
         * @summary Modify an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
         * @param {Endpoint} endpoint A valid, updated [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints/) for the endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminModifyEndpoint: async (groupId: any, appId: any, endpointId: any, endpoint: Endpoint, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminModifyEndpoint', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminModifyEndpoint', 'appId', appId)
            // verify required parameter 'endpointId' is not null or undefined
            assertParamExists('adminModifyEndpoint', 'endpointId', endpointId)
            // verify required parameter 'endpoint' is not null or undefined
            assertParamExists('adminModifyEndpoint', 'endpoint', endpoint)
            const localVarPath = `/groups/{groupId}/apps/{appId}/endpoints/{endpointId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"endpointId"}}`, encodeURIComponent(String(endpointId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(endpoint, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * EndpointsApi - functional programming interface
 * @export
 */
export const EndpointsApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = EndpointsApiAxiosParamCreator(configuration)
    return {
        /**
         * Create a new [endpoint](https://www.mongodb.com/docs/realm/endpoints/).
         * @summary Create an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {Endpoint} endpoint A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints/) for the new endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateEndpoint(groupId: any, appId: any, endpoint: Endpoint, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateEndpoint(groupId, appId, endpoint, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Delete an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteEndpoint(groupId: any, appId: any, endpointId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteEndpoint(groupId, appId, endpointId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get all [endpoint](https://www.mongodb.com/docs/realm/endpoints/) configurations.
         * @summary Get all endpoints
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetAllEndpoints(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetAllEndpoints(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get a specific [endpoint](https://www.mongodb.com/docs/realm/endpoints/)\'s configuration.
         * @summary Get an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetEndpoint(groupId: any, appId: any, endpointId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetEndpoint(groupId, appId, endpointId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Modify an existing [endpoint](https://www.mongodb.com/docs/realm/endpoints/) configuration.
         * @summary Modify an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
         * @param {Endpoint} endpoint A valid, updated [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints/) for the endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminModifyEndpoint(groupId: any, appId: any, endpointId: any, endpoint: Endpoint, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminModifyEndpoint(groupId, appId, endpointId, endpoint, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * EndpointsApi - factory interface
 * @export
 */
export const EndpointsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = EndpointsApiFp(configuration)
    return {
        /**
         * Create a new [endpoint](https://www.mongodb.com/docs/realm/endpoints/).
         * @summary Create an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {Endpoint} endpoint A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints/) for the new endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateEndpoint(groupId: any, appId: any, endpoint: Endpoint, options?: any): AxiosPromise<any> {
            return localVarFp.adminCreateEndpoint(groupId, appId, endpoint, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Delete an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteEndpoint(groupId: any, appId: any, endpointId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminDeleteEndpoint(groupId, appId, endpointId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get all [endpoint](https://www.mongodb.com/docs/realm/endpoints/) configurations.
         * @summary Get all endpoints
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAllEndpoints(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetAllEndpoints(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get a specific [endpoint](https://www.mongodb.com/docs/realm/endpoints/)\'s configuration.
         * @summary Get an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetEndpoint(groupId: any, appId: any, endpointId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetEndpoint(groupId, appId, endpointId, options).then((request) => request(axios, basePath));
        },
        /**
         * Modify an existing [endpoint](https://www.mongodb.com/docs/realm/endpoints/) configuration.
         * @summary Modify an endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
         * @param {Endpoint} endpoint A valid, updated [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints/) for the endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminModifyEndpoint(groupId: any, appId: any, endpointId: any, endpoint: Endpoint, options?: any): AxiosPromise<any> {
            return localVarFp.adminModifyEndpoint(groupId, appId, endpointId, endpoint, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * EndpointsApi - interface
 * @export
 * @interface EndpointsApi
 */
export interface EndpointsApiInterface {
    /**
     * Create a new [endpoint](https://www.mongodb.com/docs/realm/endpoints/).
     * @summary Create an endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {Endpoint} endpoint A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints/) for the new endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EndpointsApiInterface
     */
    adminCreateEndpoint(groupId: any, appId: any, endpoint: Endpoint, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * 
     * @summary Delete an endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EndpointsApiInterface
     */
    adminDeleteEndpoint(groupId: any, appId: any, endpointId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Get all [endpoint](https://www.mongodb.com/docs/realm/endpoints/) configurations.
     * @summary Get all endpoints
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EndpointsApiInterface
     */
    adminGetAllEndpoints(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Get a specific [endpoint](https://www.mongodb.com/docs/realm/endpoints/)\'s configuration.
     * @summary Get an endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EndpointsApiInterface
     */
    adminGetEndpoint(groupId: any, appId: any, endpointId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Modify an existing [endpoint](https://www.mongodb.com/docs/realm/endpoints/) configuration.
     * @summary Modify an endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
     * @param {Endpoint} endpoint A valid, updated [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints/) for the endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EndpointsApiInterface
     */
    adminModifyEndpoint(groupId: any, appId: any, endpointId: any, endpoint: Endpoint, options?: AxiosRequestConfig): AxiosPromise<any>;

}

/**
 * EndpointsApi - object-oriented interface
 * @export
 * @class EndpointsApi
 * @extends {BaseAPI}
 */
export class EndpointsApi extends BaseAPI implements EndpointsApiInterface {
    /**
     * Create a new [endpoint](https://www.mongodb.com/docs/realm/endpoints/).
     * @summary Create an endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {Endpoint} endpoint A valid [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints/) for the new endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EndpointsApi
     */
    public adminCreateEndpoint(groupId: any, appId: any, endpoint: Endpoint, options?: AxiosRequestConfig) {
        return EndpointsApiFp(this.configuration).adminCreateEndpoint(groupId, appId, endpoint, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Delete an endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EndpointsApi
     */
    public adminDeleteEndpoint(groupId: any, appId: any, endpointId: any, options?: AxiosRequestConfig) {
        return EndpointsApiFp(this.configuration).adminDeleteEndpoint(groupId, appId, endpointId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get all [endpoint](https://www.mongodb.com/docs/realm/endpoints/) configurations.
     * @summary Get all endpoints
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EndpointsApi
     */
    public adminGetAllEndpoints(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return EndpointsApiFp(this.configuration).adminGetAllEndpoints(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get a specific [endpoint](https://www.mongodb.com/docs/realm/endpoints/)\'s configuration.
     * @summary Get an endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EndpointsApi
     */
    public adminGetEndpoint(groupId: any, appId: any, endpointId: any, options?: AxiosRequestConfig) {
        return EndpointsApiFp(this.configuration).adminGetEndpoint(groupId, appId, endpointId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Modify an existing [endpoint](https://www.mongodb.com/docs/realm/endpoints/) configuration.
     * @summary Modify an endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} endpointId The unique &#x60;_id&#x60; value of an endpoint
     * @param {Endpoint} endpoint A valid, updated [configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/http_endpoints/) for the endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EndpointsApi
     */
    public adminModifyEndpoint(groupId: any, appId: any, endpointId: any, endpoint: Endpoint, options?: AxiosRequestConfig) {
        return EndpointsApiFp(this.configuration).adminModifyEndpoint(groupId, appId, endpointId, endpoint, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * EnvironmentsApi - axios parameter creator
 * @export
 */
export const EnvironmentsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Define a new environment value.
         * @summary Create an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [body] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateEnvironmentValue: async (groupId: any, appId: any, body?: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateEnvironmentValue', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateEnvironmentValue', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/environment_values`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete an existing environment value
         * @summary Delete an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteEnvironmentValue: async (groupId: any, appId: any, environmentValueId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteEnvironmentValue', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteEnvironmentValue', 'appId', appId)
            // verify required parameter 'environmentValueId' is not null or undefined
            assertParamExists('adminDeleteEnvironmentValue', 'environmentValueId', environmentValueId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/environment_values/{environmentValueId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"environmentValueId"}}`, encodeURIComponent(String(environmentValueId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get details about a specific environment value
         * @summary Get an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetEnvironmentValue: async (groupId: any, appId: any, environmentValueId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetEnvironmentValue', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetEnvironmentValue', 'appId', appId)
            // verify required parameter 'environmentValueId' is not null or undefined
            assertParamExists('adminGetEnvironmentValue', 'environmentValueId', environmentValueId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/environment_values/{environmentValueId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"environmentValueId"}}`, encodeURIComponent(String(environmentValueId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get basic information about all environment values in the App. Results do not include the environment-specific `values`. For details on a specific environment, call [Get an Environment Value](#tag/environments/operation/adminGetEnvironmentValue).
         * @summary List All Environment Values
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListEnvironmentValues: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListEnvironmentValues', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListEnvironmentValues', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/environment_values`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Modify an existing environment value
         * @summary Modify an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
         * @param {any} [body] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminModifyEnvironmentValue: async (groupId: any, appId: any, environmentValueId: any, body?: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminModifyEnvironmentValue', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminModifyEnvironmentValue', 'appId', appId)
            // verify required parameter 'environmentValueId' is not null or undefined
            assertParamExists('adminModifyEnvironmentValue', 'environmentValueId', environmentValueId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/environment_values/{environmentValueId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"environmentValueId"}}`, encodeURIComponent(String(environmentValueId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Set the App\'s active environment
         * @summary Set the App Environment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminSetEnvironmentRequest} [adminSetEnvironmentRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetEnvironment: async (groupId: any, appId: any, adminSetEnvironmentRequest?: AdminSetEnvironmentRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminSetEnvironment', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminSetEnvironment', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/environment`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminSetEnvironmentRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * EnvironmentsApi - functional programming interface
 * @export
 */
export const EnvironmentsApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = EnvironmentsApiAxiosParamCreator(configuration)
    return {
        /**
         * Define a new environment value.
         * @summary Create an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [body] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateEnvironmentValue(groupId: any, appId: any, body?: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<EnvironmentValueDescription>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateEnvironmentValue(groupId, appId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete an existing environment value
         * @summary Delete an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteEnvironmentValue(groupId: any, appId: any, environmentValueId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteEnvironmentValue(groupId, appId, environmentValueId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get details about a specific environment value
         * @summary Get an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetEnvironmentValue(groupId: any, appId: any, environmentValueId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetEnvironmentValue(groupId, appId, environmentValueId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get basic information about all environment values in the App. Results do not include the environment-specific `values`. For details on a specific environment, call [Get an Environment Value](#tag/environments/operation/adminGetEnvironmentValue).
         * @summary List All Environment Values
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListEnvironmentValues(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListEnvironmentValues(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Modify an existing environment value
         * @summary Modify an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
         * @param {any} [body] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminModifyEnvironmentValue(groupId: any, appId: any, environmentValueId: any, body?: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<EnvironmentValueDescription>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminModifyEnvironmentValue(groupId, appId, environmentValueId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Set the App\'s active environment
         * @summary Set the App Environment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminSetEnvironmentRequest} [adminSetEnvironmentRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminSetEnvironment(groupId: any, appId: any, adminSetEnvironmentRequest?: AdminSetEnvironmentRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminSetEnvironment(groupId, appId, adminSetEnvironmentRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * EnvironmentsApi - factory interface
 * @export
 */
export const EnvironmentsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = EnvironmentsApiFp(configuration)
    return {
        /**
         * Define a new environment value.
         * @summary Create an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [body] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateEnvironmentValue(groupId: any, appId: any, body?: any, options?: any): AxiosPromise<EnvironmentValueDescription> {
            return localVarFp.adminCreateEnvironmentValue(groupId, appId, body, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete an existing environment value
         * @summary Delete an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteEnvironmentValue(groupId: any, appId: any, environmentValueId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteEnvironmentValue(groupId, appId, environmentValueId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get details about a specific environment value
         * @summary Get an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetEnvironmentValue(groupId: any, appId: any, environmentValueId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetEnvironmentValue(groupId, appId, environmentValueId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get basic information about all environment values in the App. Results do not include the environment-specific `values`. For details on a specific environment, call [Get an Environment Value](#tag/environments/operation/adminGetEnvironmentValue).
         * @summary List All Environment Values
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListEnvironmentValues(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListEnvironmentValues(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Modify an existing environment value
         * @summary Modify an Environment Value
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
         * @param {any} [body] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminModifyEnvironmentValue(groupId: any, appId: any, environmentValueId: any, body?: any, options?: any): AxiosPromise<EnvironmentValueDescription> {
            return localVarFp.adminModifyEnvironmentValue(groupId, appId, environmentValueId, body, options).then((request) => request(axios, basePath));
        },
        /**
         * Set the App\'s active environment
         * @summary Set the App Environment
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminSetEnvironmentRequest} [adminSetEnvironmentRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetEnvironment(groupId: any, appId: any, adminSetEnvironmentRequest?: AdminSetEnvironmentRequest, options?: any): AxiosPromise<any> {
            return localVarFp.adminSetEnvironment(groupId, appId, adminSetEnvironmentRequest, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * EnvironmentsApi - interface
 * @export
 * @interface EnvironmentsApi
 */
export interface EnvironmentsApiInterface {
    /**
     * Define a new environment value.
     * @summary Create an Environment Value
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [body] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApiInterface
     */
    adminCreateEnvironmentValue(groupId: any, appId: any, body?: any, options?: AxiosRequestConfig): AxiosPromise<EnvironmentValueDescription>;

    /**
     * Delete an existing environment value
     * @summary Delete an Environment Value
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApiInterface
     */
    adminDeleteEnvironmentValue(groupId: any, appId: any, environmentValueId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Get details about a specific environment value
     * @summary Get an Environment Value
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApiInterface
     */
    adminGetEnvironmentValue(groupId: any, appId: any, environmentValueId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Get basic information about all environment values in the App. Results do not include the environment-specific `values`. For details on a specific environment, call [Get an Environment Value](#tag/environments/operation/adminGetEnvironmentValue).
     * @summary List All Environment Values
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApiInterface
     */
    adminListEnvironmentValues(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Modify an existing environment value
     * @summary Modify an Environment Value
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
     * @param {any} [body] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApiInterface
     */
    adminModifyEnvironmentValue(groupId: any, appId: any, environmentValueId: any, body?: any, options?: AxiosRequestConfig): AxiosPromise<EnvironmentValueDescription>;

    /**
     * Set the App\'s active environment
     * @summary Set the App Environment
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminSetEnvironmentRequest} [adminSetEnvironmentRequest] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApiInterface
     */
    adminSetEnvironment(groupId: any, appId: any, adminSetEnvironmentRequest?: AdminSetEnvironmentRequest, options?: AxiosRequestConfig): AxiosPromise<any>;

}

/**
 * EnvironmentsApi - object-oriented interface
 * @export
 * @class EnvironmentsApi
 * @extends {BaseAPI}
 */
export class EnvironmentsApi extends BaseAPI implements EnvironmentsApiInterface {
    /**
     * Define a new environment value.
     * @summary Create an Environment Value
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [body] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApi
     */
    public adminCreateEnvironmentValue(groupId: any, appId: any, body?: any, options?: AxiosRequestConfig) {
        return EnvironmentsApiFp(this.configuration).adminCreateEnvironmentValue(groupId, appId, body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete an existing environment value
     * @summary Delete an Environment Value
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApi
     */
    public adminDeleteEnvironmentValue(groupId: any, appId: any, environmentValueId: any, options?: AxiosRequestConfig) {
        return EnvironmentsApiFp(this.configuration).adminDeleteEnvironmentValue(groupId, appId, environmentValueId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get details about a specific environment value
     * @summary Get an Environment Value
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApi
     */
    public adminGetEnvironmentValue(groupId: any, appId: any, environmentValueId: any, options?: AxiosRequestConfig) {
        return EnvironmentsApiFp(this.configuration).adminGetEnvironmentValue(groupId, appId, environmentValueId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get basic information about all environment values in the App. Results do not include the environment-specific `values`. For details on a specific environment, call [Get an Environment Value](#tag/environments/operation/adminGetEnvironmentValue).
     * @summary List All Environment Values
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApi
     */
    public adminListEnvironmentValues(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return EnvironmentsApiFp(this.configuration).adminListEnvironmentValues(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Modify an existing environment value
     * @summary Modify an Environment Value
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} environmentValueId The &#x60;_id&#x60; value of an environment value.
     * @param {any} [body] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApi
     */
    public adminModifyEnvironmentValue(groupId: any, appId: any, environmentValueId: any, body?: any, options?: AxiosRequestConfig) {
        return EnvironmentsApiFp(this.configuration).adminModifyEnvironmentValue(groupId, appId, environmentValueId, body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Set the App\'s active environment
     * @summary Set the App Environment
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminSetEnvironmentRequest} [adminSetEnvironmentRequest] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EnvironmentsApi
     */
    public adminSetEnvironment(groupId: any, appId: any, adminSetEnvironmentRequest?: AdminSetEnvironmentRequest, options?: AxiosRequestConfig) {
        return EnvironmentsApiFp(this.configuration).adminSetEnvironment(groupId, appId, adminSetEnvironmentRequest, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * EventSubscriptionsApi - axios parameter creator
 * @export
 */
export const EventSubscriptionsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Return information about an event subscription.
         * @summary Get an Event Subscription
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} eventSubscriptionId The unique &#x60;_id&#x60; value of an event subscription.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetEventSubscription: async (groupId: any, appId: any, eventSubscriptionId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetEventSubscription', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetEventSubscription', 'appId', appId)
            // verify required parameter 'eventSubscriptionId' is not null or undefined
            assertParamExists('adminGetEventSubscription', 'eventSubscriptionId', eventSubscriptionId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/event_subscriptions/{eventSubscriptionId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"eventSubscriptionId"}}`, encodeURIComponent(String(eventSubscriptionId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return information about the most recent execution of an event subscription.
         * @summary Get the Latest Event Subscription Execution
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} eventSubscriptionId The unique &#x60;_id&#x60; value of an event subscription.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetLatestEventSubscriptionExecution: async (groupId: any, appId: any, eventSubscriptionId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetLatestEventSubscriptionExecution', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetLatestEventSubscriptionExecution', 'appId', appId)
            // verify required parameter 'eventSubscriptionId' is not null or undefined
            assertParamExists('adminGetLatestEventSubscriptionExecution', 'eventSubscriptionId', eventSubscriptionId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/event_subscriptions/{eventSubscriptionId}/execution`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"eventSubscriptionId"}}`, encodeURIComponent(String(eventSubscriptionId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get all event subscriptions.
         * @summary List Event Subscriptions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminListEventSubscriptionsTypeEnum} [type] The type of event subscription to return.  - &#x60;DATABASE&#x60;: Return Database Triggers - &#x60;AUTHENTICATION&#x60;: Return Authentication Triggers - &#x60;SCHEDULED&#x60;: Return Scheduled Triggers - &#x60;SYNCTRANSLATOR&#x60;: Return Device Sync translators
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListEventSubscriptions: async (groupId: any, appId: any, type?: AdminListEventSubscriptionsTypeEnum, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListEventSubscriptions', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListEventSubscriptions', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/event_subscriptions`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (type !== undefined) {
                localVarQueryParameter['type'] = type;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * EventSubscriptionsApi - functional programming interface
 * @export
 */
export const EventSubscriptionsApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = EventSubscriptionsApiAxiosParamCreator(configuration)
    return {
        /**
         * Return information about an event subscription.
         * @summary Get an Event Subscription
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} eventSubscriptionId The unique &#x60;_id&#x60; value of an event subscription.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetEventSubscription(groupId: any, appId: any, eventSubscriptionId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetEventSubscription(groupId, appId, eventSubscriptionId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Return information about the most recent execution of an event subscription.
         * @summary Get the Latest Event Subscription Execution
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} eventSubscriptionId The unique &#x60;_id&#x60; value of an event subscription.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetLatestEventSubscriptionExecution(groupId: any, appId: any, eventSubscriptionId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminGetLatestEventSubscriptionExecution200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetLatestEventSubscriptionExecution(groupId, appId, eventSubscriptionId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get all event subscriptions.
         * @summary List Event Subscriptions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminListEventSubscriptionsTypeEnum} [type] The type of event subscription to return.  - &#x60;DATABASE&#x60;: Return Database Triggers - &#x60;AUTHENTICATION&#x60;: Return Authentication Triggers - &#x60;SCHEDULED&#x60;: Return Scheduled Triggers - &#x60;SYNCTRANSLATOR&#x60;: Return Device Sync translators
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListEventSubscriptions(groupId: any, appId: any, type?: AdminListEventSubscriptionsTypeEnum, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListEventSubscriptions(groupId, appId, type, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * EventSubscriptionsApi - factory interface
 * @export
 */
export const EventSubscriptionsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = EventSubscriptionsApiFp(configuration)
    return {
        /**
         * Return information about an event subscription.
         * @summary Get an Event Subscription
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} eventSubscriptionId The unique &#x60;_id&#x60; value of an event subscription.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetEventSubscription(groupId: any, appId: any, eventSubscriptionId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetEventSubscription(groupId, appId, eventSubscriptionId, options).then((request) => request(axios, basePath));
        },
        /**
         * Return information about the most recent execution of an event subscription.
         * @summary Get the Latest Event Subscription Execution
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} eventSubscriptionId The unique &#x60;_id&#x60; value of an event subscription.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetLatestEventSubscriptionExecution(groupId: any, appId: any, eventSubscriptionId: any, options?: any): AxiosPromise<AdminGetLatestEventSubscriptionExecution200Response> {
            return localVarFp.adminGetLatestEventSubscriptionExecution(groupId, appId, eventSubscriptionId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get all event subscriptions.
         * @summary List Event Subscriptions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminListEventSubscriptionsTypeEnum} [type] The type of event subscription to return.  - &#x60;DATABASE&#x60;: Return Database Triggers - &#x60;AUTHENTICATION&#x60;: Return Authentication Triggers - &#x60;SCHEDULED&#x60;: Return Scheduled Triggers - &#x60;SYNCTRANSLATOR&#x60;: Return Device Sync translators
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListEventSubscriptions(groupId: any, appId: any, type?: AdminListEventSubscriptionsTypeEnum, options?: any): AxiosPromise<any> {
            return localVarFp.adminListEventSubscriptions(groupId, appId, type, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * EventSubscriptionsApi - interface
 * @export
 * @interface EventSubscriptionsApi
 */
export interface EventSubscriptionsApiInterface {
    /**
     * Return information about an event subscription.
     * @summary Get an Event Subscription
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} eventSubscriptionId The unique &#x60;_id&#x60; value of an event subscription.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EventSubscriptionsApiInterface
     */
    adminGetEventSubscription(groupId: any, appId: any, eventSubscriptionId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Return information about the most recent execution of an event subscription.
     * @summary Get the Latest Event Subscription Execution
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} eventSubscriptionId The unique &#x60;_id&#x60; value of an event subscription.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EventSubscriptionsApiInterface
     */
    adminGetLatestEventSubscriptionExecution(groupId: any, appId: any, eventSubscriptionId: any, options?: AxiosRequestConfig): AxiosPromise<AdminGetLatestEventSubscriptionExecution200Response>;

    /**
     * Get all event subscriptions.
     * @summary List Event Subscriptions
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminListEventSubscriptionsTypeEnum} [type] The type of event subscription to return.  - &#x60;DATABASE&#x60;: Return Database Triggers - &#x60;AUTHENTICATION&#x60;: Return Authentication Triggers - &#x60;SCHEDULED&#x60;: Return Scheduled Triggers - &#x60;SYNCTRANSLATOR&#x60;: Return Device Sync translators
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EventSubscriptionsApiInterface
     */
    adminListEventSubscriptions(groupId: any, appId: any, type?: AdminListEventSubscriptionsTypeEnum, options?: AxiosRequestConfig): AxiosPromise<any>;

}

/**
 * EventSubscriptionsApi - object-oriented interface
 * @export
 * @class EventSubscriptionsApi
 * @extends {BaseAPI}
 */
export class EventSubscriptionsApi extends BaseAPI implements EventSubscriptionsApiInterface {
    /**
     * Return information about an event subscription.
     * @summary Get an Event Subscription
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} eventSubscriptionId The unique &#x60;_id&#x60; value of an event subscription.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EventSubscriptionsApi
     */
    public adminGetEventSubscription(groupId: any, appId: any, eventSubscriptionId: any, options?: AxiosRequestConfig) {
        return EventSubscriptionsApiFp(this.configuration).adminGetEventSubscription(groupId, appId, eventSubscriptionId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Return information about the most recent execution of an event subscription.
     * @summary Get the Latest Event Subscription Execution
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} eventSubscriptionId The unique &#x60;_id&#x60; value of an event subscription.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EventSubscriptionsApi
     */
    public adminGetLatestEventSubscriptionExecution(groupId: any, appId: any, eventSubscriptionId: any, options?: AxiosRequestConfig) {
        return EventSubscriptionsApiFp(this.configuration).adminGetLatestEventSubscriptionExecution(groupId, appId, eventSubscriptionId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get all event subscriptions.
     * @summary List Event Subscriptions
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminListEventSubscriptionsTypeEnum} [type] The type of event subscription to return.  - &#x60;DATABASE&#x60;: Return Database Triggers - &#x60;AUTHENTICATION&#x60;: Return Authentication Triggers - &#x60;SCHEDULED&#x60;: Return Scheduled Triggers - &#x60;SYNCTRANSLATOR&#x60;: Return Device Sync translators
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EventSubscriptionsApi
     */
    public adminListEventSubscriptions(groupId: any, appId: any, type?: AdminListEventSubscriptionsTypeEnum, options?: AxiosRequestConfig) {
        return EventSubscriptionsApiFp(this.configuration).adminListEventSubscriptions(groupId, appId, type, options).then((request) => request(this.axios, this.basePath));
    }
}

/**
 * @export
 */
export const AdminListEventSubscriptionsTypeEnum = {
    Database: 'DATABASE',
    Authentication: 'AUTHENTICATION',
    Scheduled: 'SCHEDULED',
    Synctranslator: 'SYNCTRANSLATOR'
} as const;
export type AdminListEventSubscriptionsTypeEnum = typeof AdminListEventSubscriptionsTypeEnum[keyof typeof AdminListEventSubscriptionsTypeEnum];


/**
 * FunctionsApi - axios parameter creator
 * @export
 */
export const FunctionsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create a new [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Create a new Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NewFunction} newFunction The function to create
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateFunction: async (groupId: any, appId: any, newFunction: NewFunction, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateFunction', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateFunction', 'appId', appId)
            // verify required parameter 'newFunction' is not null or undefined
            assertParamExists('adminCreateFunction', 'newFunction', newFunction)
            const localVarPath = `/groups/{groupId}/apps/{appId}/functions`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(newFunction, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Delete a Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteFunction: async (groupId: any, appId: any, functionId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteFunction', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteFunction', 'appId', appId)
            // verify required parameter 'functionId' is not null or undefined
            assertParamExists('adminDeleteFunction', 'functionId', functionId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/functions/{functionId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"functionId"}}`, encodeURIComponent(String(functionId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Execute a [function](https://www.mongodb.com/docs/realm/functions#std-label-functions) for testing.
         * @summary Execute a function
         * @param {any} userId The user as which to execute the function. Either &#x60;user_id&#x60; or &#x60;run_as_system&#x60; is required. You cannot specify both.
         * @param {any} runAsSystem Determine whether or not to run as system user. Either &#x60;run_as_system&#x60; or &#x60;user_id&#x60; is required. You cannot specify both.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminExecuteFunctionRequest} adminExecuteFunctionRequest The function to execute.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminExecuteFunction: async (userId: any, runAsSystem: any, groupId: any, appId: any, adminExecuteFunctionRequest: AdminExecuteFunctionRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // Assert that either userId or runAsSystem is set, but not both
            if ((userId == null && runAsSystem == null) || (userId != null && runAsSystem != null)) {
                throw new Error("Either userId or runAsSystem should be set, but not both.");
            }// verify required parameter 'userId' is not null or undefined
            // assertParamExists('adminExecuteFunction', 'userId', userId)
            // verify required parameter 'runAsSystem' is not null or undefined
            // assertParamExists('adminExecuteFunction', 'runAsSystem', runAsSystem)
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminExecuteFunction', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminExecuteFunction', 'appId', appId)
            // verify required parameter 'adminExecuteFunctionRequest' is not null or undefined
            assertParamExists('adminExecuteFunction', 'adminExecuteFunctionRequest', adminExecuteFunctionRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/debug/execute_function`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (userId !== undefined) {
                localVarQueryParameter['user_id'] = userId;
            }

            if (runAsSystem !== undefined) {
                localVarQueryParameter['run_as_system'] = runAsSystem;
            }



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminExecuteFunctionRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Execute a [function](https://www.mongodb.com/docs/realm/functions#std-label-functions)\'s source code for testing.
         * @summary Execute a function\'s source code for testing
         * @param {any} userId The user as which to execute the function. Either &#x60;user_id&#x60; or &#x60;run_as_system&#x60; is required. You cannot specify both.
         * @param {any} runAsSystem Determine whether or not to run as system user. Either &#x60;run_as_system&#x60; or &#x60;user_id&#x60; is required. You cannot specify both.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminExecuteFunctionSourceRequest} adminExecuteFunctionSourceRequest The source to execute.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminExecuteFunctionSource: async (userId: any, runAsSystem: any, groupId: any, appId: any, adminExecuteFunctionSourceRequest: AdminExecuteFunctionSourceRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'userId' is not null or undefined
            assertParamExists('adminExecuteFunctionSource', 'userId', userId)
            // verify required parameter 'runAsSystem' is not null or undefined
            assertParamExists('adminExecuteFunctionSource', 'runAsSystem', runAsSystem)
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminExecuteFunctionSource', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminExecuteFunctionSource', 'appId', appId)
            // verify required parameter 'adminExecuteFunctionSourceRequest' is not null or undefined
            assertParamExists('adminExecuteFunctionSource', 'adminExecuteFunctionSourceRequest', adminExecuteFunctionSourceRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/debug/execute_function_source`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (userId !== undefined) {
                localVarQueryParameter['user_id'] = userId;
            }

            if (runAsSystem !== undefined) {
                localVarQueryParameter['run_as_system'] = runAsSystem;
            }



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminExecuteFunctionSourceRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Retrieve a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Retrieve a Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetFunction: async (groupId: any, appId: any, functionId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetFunction', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetFunction', 'appId', appId)
            // verify required parameter 'functionId' is not null or undefined
            assertParamExists('adminGetFunction', 'functionId', functionId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/functions/{functionId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"functionId"}}`, encodeURIComponent(String(functionId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List [Functions](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary List Functions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListFunctions: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListFunctions', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListFunctions', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/functions`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Update a Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateFunction: async (groupId: any, appId: any, functionId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateFunction', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateFunction', 'appId', appId)
            // verify required parameter 'functionId' is not null or undefined
            assertParamExists('adminUpdateFunction', 'functionId', functionId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/functions/{functionId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"functionId"}}`, encodeURIComponent(String(functionId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * FunctionsApi - functional programming interface
 * @export
 */
export const FunctionsApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = FunctionsApiAxiosParamCreator(configuration)
    return {
        /**
         * Create a new [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Create a new Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NewFunction} newFunction The function to create
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateFunction(groupId: any, appId: any, newFunction: NewFunction, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminCreateFunction201Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateFunction(groupId, appId, newFunction, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Delete a Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteFunction(groupId: any, appId: any, functionId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteFunction(groupId, appId, functionId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Execute a [function](https://www.mongodb.com/docs/realm/functions#std-label-functions) for testing.
         * @summary Execute a function
         * @param {any} userId The user as which to execute the function. Either &#x60;user_id&#x60; or &#x60;run_as_system&#x60; is required. You cannot specify both.
         * @param {any} runAsSystem Determine whether or not to run as system user. Either &#x60;run_as_system&#x60; or &#x60;user_id&#x60; is required. You cannot specify both.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminExecuteFunctionRequest} adminExecuteFunctionRequest The function to execute.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminExecuteFunction(userId: any, runAsSystem: any, groupId: any, appId: any, adminExecuteFunctionRequest: AdminExecuteFunctionRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminExecuteFunction200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminExecuteFunction(userId, runAsSystem, groupId, appId, adminExecuteFunctionRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Execute a [function](https://www.mongodb.com/docs/realm/functions#std-label-functions)\'s source code for testing.
         * @summary Execute a function\'s source code for testing
         * @param {any} userId The user as which to execute the function. Either &#x60;user_id&#x60; or &#x60;run_as_system&#x60; is required. You cannot specify both.
         * @param {any} runAsSystem Determine whether or not to run as system user. Either &#x60;run_as_system&#x60; or &#x60;user_id&#x60; is required. You cannot specify both.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminExecuteFunctionSourceRequest} adminExecuteFunctionSourceRequest The source to execute.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminExecuteFunctionSource(userId: any, runAsSystem: any, groupId: any, appId: any, adminExecuteFunctionSourceRequest: AdminExecuteFunctionSourceRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminExecuteFunction200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminExecuteFunctionSource(userId, runAsSystem, groupId, appId, adminExecuteFunctionSourceRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Retrieve a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Retrieve a Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetFunction(groupId: any, appId: any, functionId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Function>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetFunction(groupId, appId, functionId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List [Functions](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary List Functions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListFunctions(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListFunctions(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Update a Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateFunction(groupId: any, appId: any, functionId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<NewFunction>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateFunction(groupId, appId, functionId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * FunctionsApi - factory interface
 * @export
 */
export const FunctionsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = FunctionsApiFp(configuration)
    return {
        /**
         * Create a new [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Create a new Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NewFunction} newFunction The function to create
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateFunction(groupId: any, appId: any, newFunction: NewFunction, options?: any): AxiosPromise<AdminCreateFunction201Response> {
            return localVarFp.adminCreateFunction(groupId, appId, newFunction, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Delete a Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteFunction(groupId: any, appId: any, functionId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteFunction(groupId, appId, functionId, options).then((request) => request(axios, basePath));
        },
        /**
         * Execute a [function](https://www.mongodb.com/docs/realm/functions#std-label-functions) for testing.
         * @summary Execute a function
         * @param {any} userId The user as which to execute the function. Either &#x60;user_id&#x60; or &#x60;run_as_system&#x60; is required. You cannot specify both.
         * @param {any} runAsSystem Determine whether or not to run as system user. Either &#x60;run_as_system&#x60; or &#x60;user_id&#x60; is required. You cannot specify both.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminExecuteFunctionRequest} adminExecuteFunctionRequest The function to execute.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminExecuteFunction(userId: any, runAsSystem: any, groupId: any, appId: any, adminExecuteFunctionRequest: AdminExecuteFunctionRequest, options?: any): AxiosPromise<AdminExecuteFunction200Response> {
            return localVarFp.adminExecuteFunction(userId, runAsSystem, groupId, appId, adminExecuteFunctionRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Execute a [function](https://www.mongodb.com/docs/realm/functions#std-label-functions)\'s source code for testing.
         * @summary Execute a function\'s source code for testing
         * @param {any} userId The user as which to execute the function. Either &#x60;user_id&#x60; or &#x60;run_as_system&#x60; is required. You cannot specify both.
         * @param {any} runAsSystem Determine whether or not to run as system user. Either &#x60;run_as_system&#x60; or &#x60;user_id&#x60; is required. You cannot specify both.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminExecuteFunctionSourceRequest} adminExecuteFunctionSourceRequest The source to execute.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminExecuteFunctionSource(userId: any, runAsSystem: any, groupId: any, appId: any, adminExecuteFunctionSourceRequest: AdminExecuteFunctionSourceRequest, options?: any): AxiosPromise<AdminExecuteFunction200Response> {
            return localVarFp.adminExecuteFunctionSource(userId, runAsSystem, groupId, appId, adminExecuteFunctionSourceRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Retrieve a Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetFunction(groupId: any, appId: any, functionId: any, options?: any): AxiosPromise<Function> {
            return localVarFp.adminGetFunction(groupId, appId, functionId, options).then((request) => request(axios, basePath));
        },
        /**
         * List [Functions](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary List Functions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListFunctions(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListFunctions(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Update a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
         * @summary Update a Function
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateFunction(groupId: any, appId: any, functionId: any, options?: any): AxiosPromise<NewFunction> {
            return localVarFp.adminUpdateFunction(groupId, appId, functionId, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * FunctionsApi - interface
 * @export
 * @interface FunctionsApi
 */
export interface FunctionsApiInterface {
    /**
     * Create a new [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
     * @summary Create a new Function
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {NewFunction} newFunction The function to create
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApiInterface
     */
    adminCreateFunction(groupId: any, appId: any, newFunction: NewFunction, options?: AxiosRequestConfig): AxiosPromise<AdminCreateFunction201Response>;

    /**
     * Delete a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
     * @summary Delete a Function
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApiInterface
     */
    adminDeleteFunction(groupId: any, appId: any, functionId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Execute a [function](https://www.mongodb.com/docs/realm/functions#std-label-functions) for testing.
     * @summary Execute a function
     * @param {any} userId The user as which to execute the function. Either &#x60;user_id&#x60; or &#x60;run_as_system&#x60; is required. You cannot specify both.
     * @param {any} runAsSystem Determine whether or not to run as system user. Either &#x60;run_as_system&#x60; or &#x60;user_id&#x60; is required. You cannot specify both.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminExecuteFunctionRequest} adminExecuteFunctionRequest The function to execute.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApiInterface
     */
    adminExecuteFunction(userId: any, runAsSystem: any, groupId: any, appId: any, adminExecuteFunctionRequest: AdminExecuteFunctionRequest, options?: AxiosRequestConfig): AxiosPromise<AdminExecuteFunction200Response>;

    /**
     * Execute a [function](https://www.mongodb.com/docs/realm/functions#std-label-functions)\'s source code for testing.
     * @summary Execute a function\'s source code for testing
     * @param {any} userId The user as which to execute the function. Either &#x60;user_id&#x60; or &#x60;run_as_system&#x60; is required. You cannot specify both.
     * @param {any} runAsSystem Determine whether or not to run as system user. Either &#x60;run_as_system&#x60; or &#x60;user_id&#x60; is required. You cannot specify both.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminExecuteFunctionSourceRequest} adminExecuteFunctionSourceRequest The source to execute.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApiInterface
     */
    adminExecuteFunctionSource(userId: any, runAsSystem: any, groupId: any, appId: any, adminExecuteFunctionSourceRequest: AdminExecuteFunctionSourceRequest, options?: AxiosRequestConfig): AxiosPromise<AdminExecuteFunction200Response>;

    /**
     * Retrieve a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
     * @summary Retrieve a Function
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApiInterface
     */
    adminGetFunction(groupId: any, appId: any, functionId: any, options?: AxiosRequestConfig): AxiosPromise<Function>;

    /**
     * List [Functions](https://www.mongodb.com/docs/realm/functions#std-label-functions).
     * @summary List Functions
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApiInterface
     */
    adminListFunctions(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Update a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
     * @summary Update a Function
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApiInterface
     */
    adminUpdateFunction(groupId: any, appId: any, functionId: any, options?: AxiosRequestConfig): AxiosPromise<NewFunction>;

}

/**
 * FunctionsApi - object-oriented interface
 * @export
 * @class FunctionsApi
 * @extends {BaseAPI}
 */
export class FunctionsApi extends BaseAPI implements FunctionsApiInterface {
    /**
     * Create a new [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
     * @summary Create a new Function
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {NewFunction} newFunction The function to create
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApi
     */
    public adminCreateFunction(groupId: any, appId: any, newFunction: NewFunction, options?: AxiosRequestConfig) {
        return FunctionsApiFp(this.configuration).adminCreateFunction(groupId, appId, newFunction, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
     * @summary Delete a Function
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApi
     */
    public adminDeleteFunction(groupId: any, appId: any, functionId: any, options?: AxiosRequestConfig) {
        return FunctionsApiFp(this.configuration).adminDeleteFunction(groupId, appId, functionId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Execute a [function](https://www.mongodb.com/docs/realm/functions#std-label-functions) for testing.
     * @summary Execute a function
     * @param {any} userId The user as which to execute the function. Either &#x60;user_id&#x60; or &#x60;run_as_system&#x60; is required. You cannot specify both.
     * @param {any} runAsSystem Determine whether or not to run as system user. Either &#x60;run_as_system&#x60; or &#x60;user_id&#x60; is required. You cannot specify both.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminExecuteFunctionRequest} adminExecuteFunctionRequest The function to execute.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApi
     */
    public adminExecuteFunction(userId: any, runAsSystem: any, groupId: any, appId: any, adminExecuteFunctionRequest: AdminExecuteFunctionRequest, options?: AxiosRequestConfig) {
        return FunctionsApiFp(this.configuration).adminExecuteFunction(userId, runAsSystem, groupId, appId, adminExecuteFunctionRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Execute a [function](https://www.mongodb.com/docs/realm/functions#std-label-functions)\'s source code for testing.
     * @summary Execute a function\'s source code for testing
     * @param {any} userId The user as which to execute the function. Either &#x60;user_id&#x60; or &#x60;run_as_system&#x60; is required. You cannot specify both.
     * @param {any} runAsSystem Determine whether or not to run as system user. Either &#x60;run_as_system&#x60; or &#x60;user_id&#x60; is required. You cannot specify both.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminExecuteFunctionSourceRequest} adminExecuteFunctionSourceRequest The source to execute.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApi
     */
    public adminExecuteFunctionSource(userId: any, runAsSystem: any, groupId: any, appId: any, adminExecuteFunctionSourceRequest: AdminExecuteFunctionSourceRequest, options?: AxiosRequestConfig) {
        return FunctionsApiFp(this.configuration).adminExecuteFunctionSource(userId, runAsSystem, groupId, appId, adminExecuteFunctionSourceRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Retrieve a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
     * @summary Retrieve a Function
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApi
     */
    public adminGetFunction(groupId: any, appId: any, functionId: any, options?: AxiosRequestConfig) {
        return FunctionsApiFp(this.configuration).adminGetFunction(groupId, appId, functionId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List [Functions](https://www.mongodb.com/docs/realm/functions#std-label-functions).
     * @summary List Functions
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApi
     */
    public adminListFunctions(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return FunctionsApiFp(this.configuration).adminListFunctions(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update a [Function](https://www.mongodb.com/docs/realm/functions#std-label-functions).
     * @summary Update a Function
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} functionId The unique &#x60;_id&#x60; value of a function.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof FunctionsApi
     */
    public adminUpdateFunction(groupId: any, appId: any, functionId: any, options?: AxiosRequestConfig) {
        return FunctionsApiFp(this.configuration).adminUpdateFunction(groupId, appId, functionId, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * GraphqlApi - axios parameter creator
 * @export
 */
export const GraphqlApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create a new [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/).
         * @summary Create a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {CustomResolver} customResolver A valid [custom resolver configuration](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-custom-resolver) object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateCustomResolver: async (groupId: any, appId: any, customResolver: CustomResolver, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateCustomResolver', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateCustomResolver', 'appId', appId)
            // verify required parameter 'customResolver' is not null or undefined
            assertParamExists('adminCreateCustomResolver', 'customResolver', customResolver)
            const localVarPath = `/groups/{groupId}/apps/{appId}/graphql/custom_resolvers`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(customResolver, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete an existing [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
         * @summary Delete a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteCustomResolver: async (groupId: any, appId: any, customResolverId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteCustomResolver', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteCustomResolver', 'appId', appId)
            // verify required parameter 'customResolverId' is not null or undefined
            assertParamExists('adminDeleteCustomResolver', 'customResolverId', customResolverId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/graphql/custom_resolvers/{customResolverId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"customResolverId"}}`, encodeURIComponent(String(customResolverId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get all [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configurations from your app\'s GraphQL API.
         * @summary Get all custom resolvers
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAllCustomResolvers: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetAllCustomResolvers', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetAllCustomResolvers', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/graphql/custom_resolvers`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get a specific [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
         * @summary Get a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetCustomResolver: async (groupId: any, appId: any, customResolverId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetCustomResolver', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetCustomResolver', 'appId', appId)
            // verify required parameter 'customResolverId' is not null or undefined
            assertParamExists('adminGetCustomResolver', 'customResolverId', customResolverId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/graphql/custom_resolvers/{customResolverId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"customResolverId"}}`, encodeURIComponent(String(customResolverId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get your app\'s [GraphQL API](https://www.mongodb.com/docs/atlas/app-services/graphql/) configuration.
         * @summary Get GraphQL API Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetGraphQLConfig: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetGraphQLConfig', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetGraphQLConfig', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/graphql/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get the current validation level and action for reads and writes.
         * @summary Get validation settings
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetGraphQLValidationSettings: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetGraphQLValidationSettings', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetGraphQLValidationSettings', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/validation_settings/graphql`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Modify an existing [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
         * @summary Modify a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
         * @param {CustomResolver} customResolver A valid, updated [custom resolver configuration](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-custom-resolver) object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminModifyCustomResolver: async (groupId: any, appId: any, customResolverId: any, customResolver: CustomResolver, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminModifyCustomResolver', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminModifyCustomResolver', 'appId', appId)
            // verify required parameter 'customResolverId' is not null or undefined
            assertParamExists('adminModifyCustomResolver', 'customResolverId', customResolverId)
            // verify required parameter 'customResolver' is not null or undefined
            assertParamExists('adminModifyCustomResolver', 'customResolver', customResolver)
            const localVarPath = `/groups/{groupId}/apps/{appId}/graphql/custom_resolvers/{customResolverId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"customResolverId"}}`, encodeURIComponent(String(customResolverId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(customResolver, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Run a query or mutation as a system user that bypasses authentication and data access rules. You can access metadata about your API, including its schema, with an [introspection](https://graphql.org/learn/introspection/) query.
         * @summary Run a query or mutation
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminRunGraphQLOperationRequest} [adminRunGraphQLOperationRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminRunGraphQLOperation: async (groupId: any, appId: any, adminRunGraphQLOperationRequest?: AdminRunGraphQLOperationRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminRunGraphQLOperation', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminRunGraphQLOperation', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/graphql`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminRunGraphQLOperationRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Set the validation level and action for reads and writes.
         * @summary Modify validation settings
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {GraphQLValidationSettings} graphQLValidationSettings The updated validation levels and actions.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetGraphQLValidationSettings: async (groupId: any, appId: any, graphQLValidationSettings: GraphQLValidationSettings, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminSetGraphQLValidationSettings', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminSetGraphQLValidationSettings', 'appId', appId)
            // verify required parameter 'graphQLValidationSettings' is not null or undefined
            assertParamExists('adminSetGraphQLValidationSettings', 'graphQLValidationSettings', graphQLValidationSettings)
            const localVarPath = `/groups/{groupId}/apps/{appId}/validation_settings/graphql`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(graphQLValidationSettings, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update your app\'s [GraphQL API](https://www.mongodb.com/docs/atlas/app-services/graphql/) configuration.
         * @summary Update GraphQL API Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {GraphQLConfig} graphQLConfig A valid [GraphQL API configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-graphql).
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateGraphQLConfig: async (groupId: any, appId: any, graphQLConfig: GraphQLConfig, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateGraphQLConfig', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateGraphQLConfig', 'appId', appId)
            // verify required parameter 'graphQLConfig' is not null or undefined
            assertParamExists('adminUpdateGraphQLConfig', 'graphQLConfig', graphQLConfig)
            const localVarPath = `/groups/{groupId}/apps/{appId}/graphql/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(graphQLConfig, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * GraphqlApi - functional programming interface
 * @export
 */
export const GraphqlApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = GraphqlApiAxiosParamCreator(configuration)
    return {
        /**
         * Create a new [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/).
         * @summary Create a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {CustomResolver} customResolver A valid [custom resolver configuration](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-custom-resolver) object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateCustomResolver(groupId: any, appId: any, customResolver: CustomResolver, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CustomResolver>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateCustomResolver(groupId, appId, customResolver, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete an existing [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
         * @summary Delete a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteCustomResolver(groupId: any, appId: any, customResolverId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteCustomResolver(groupId, appId, customResolverId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get all [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configurations from your app\'s GraphQL API.
         * @summary Get all custom resolvers
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetAllCustomResolvers(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetAllCustomResolvers(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get a specific [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
         * @summary Get a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetCustomResolver(groupId: any, appId: any, customResolverId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CustomResolver>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetCustomResolver(groupId, appId, customResolverId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get your app\'s [GraphQL API](https://www.mongodb.com/docs/atlas/app-services/graphql/) configuration.
         * @summary Get GraphQL API Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetGraphQLConfig(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GraphQLConfig>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetGraphQLConfig(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get the current validation level and action for reads and writes.
         * @summary Get validation settings
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetGraphQLValidationSettings(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GraphQLValidationSettings>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetGraphQLValidationSettings(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Modify an existing [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
         * @summary Modify a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
         * @param {CustomResolver} customResolver A valid, updated [custom resolver configuration](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-custom-resolver) object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminModifyCustomResolver(groupId: any, appId: any, customResolverId: any, customResolver: CustomResolver, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminModifyCustomResolver(groupId, appId, customResolverId, customResolver, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Run a query or mutation as a system user that bypasses authentication and data access rules. You can access metadata about your API, including its schema, with an [introspection](https://graphql.org/learn/introspection/) query.
         * @summary Run a query or mutation
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminRunGraphQLOperationRequest} [adminRunGraphQLOperationRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminRunGraphQLOperation(groupId: any, appId: any, adminRunGraphQLOperationRequest?: AdminRunGraphQLOperationRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminRunGraphQLOperation200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminRunGraphQLOperation(groupId, appId, adminRunGraphQLOperationRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Set the validation level and action for reads and writes.
         * @summary Modify validation settings
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {GraphQLValidationSettings} graphQLValidationSettings The updated validation levels and actions.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminSetGraphQLValidationSettings(groupId: any, appId: any, graphQLValidationSettings: GraphQLValidationSettings, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminSetGraphQLValidationSettings(groupId, appId, graphQLValidationSettings, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update your app\'s [GraphQL API](https://www.mongodb.com/docs/atlas/app-services/graphql/) configuration.
         * @summary Update GraphQL API Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {GraphQLConfig} graphQLConfig A valid [GraphQL API configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-graphql).
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateGraphQLConfig(groupId: any, appId: any, graphQLConfig: GraphQLConfig, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateGraphQLConfig(groupId, appId, graphQLConfig, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * GraphqlApi - factory interface
 * @export
 */
export const GraphqlApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = GraphqlApiFp(configuration)
    return {
        /**
         * Create a new [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/).
         * @summary Create a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {CustomResolver} customResolver A valid [custom resolver configuration](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-custom-resolver) object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateCustomResolver(groupId: any, appId: any, customResolver: CustomResolver, options?: any): AxiosPromise<CustomResolver> {
            return localVarFp.adminCreateCustomResolver(groupId, appId, customResolver, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete an existing [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
         * @summary Delete a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteCustomResolver(groupId: any, appId: any, customResolverId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteCustomResolver(groupId, appId, customResolverId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get all [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configurations from your app\'s GraphQL API.
         * @summary Get all custom resolvers
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAllCustomResolvers(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetAllCustomResolvers(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get a specific [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
         * @summary Get a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetCustomResolver(groupId: any, appId: any, customResolverId: any, options?: any): AxiosPromise<CustomResolver> {
            return localVarFp.adminGetCustomResolver(groupId, appId, customResolverId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get your app\'s [GraphQL API](https://www.mongodb.com/docs/atlas/app-services/graphql/) configuration.
         * @summary Get GraphQL API Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetGraphQLConfig(groupId: any, appId: any, options?: any): AxiosPromise<GraphQLConfig> {
            return localVarFp.adminGetGraphQLConfig(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get the current validation level and action for reads and writes.
         * @summary Get validation settings
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetGraphQLValidationSettings(groupId: any, appId: any, options?: any): AxiosPromise<GraphQLValidationSettings> {
            return localVarFp.adminGetGraphQLValidationSettings(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Modify an existing [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
         * @summary Modify a custom resolver
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
         * @param {CustomResolver} customResolver A valid, updated [custom resolver configuration](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-custom-resolver) object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminModifyCustomResolver(groupId: any, appId: any, customResolverId: any, customResolver: CustomResolver, options?: any): AxiosPromise<void> {
            return localVarFp.adminModifyCustomResolver(groupId, appId, customResolverId, customResolver, options).then((request) => request(axios, basePath));
        },
        /**
         * Run a query or mutation as a system user that bypasses authentication and data access rules. You can access metadata about your API, including its schema, with an [introspection](https://graphql.org/learn/introspection/) query.
         * @summary Run a query or mutation
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminRunGraphQLOperationRequest} [adminRunGraphQLOperationRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminRunGraphQLOperation(groupId: any, appId: any, adminRunGraphQLOperationRequest?: AdminRunGraphQLOperationRequest, options?: any): AxiosPromise<AdminRunGraphQLOperation200Response> {
            return localVarFp.adminRunGraphQLOperation(groupId, appId, adminRunGraphQLOperationRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Set the validation level and action for reads and writes.
         * @summary Modify validation settings
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {GraphQLValidationSettings} graphQLValidationSettings The updated validation levels and actions.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetGraphQLValidationSettings(groupId: any, appId: any, graphQLValidationSettings: GraphQLValidationSettings, options?: any): AxiosPromise<void> {
            return localVarFp.adminSetGraphQLValidationSettings(groupId, appId, graphQLValidationSettings, options).then((request) => request(axios, basePath));
        },
        /**
         * Update your app\'s [GraphQL API](https://www.mongodb.com/docs/atlas/app-services/graphql/) configuration.
         * @summary Update GraphQL API Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {GraphQLConfig} graphQLConfig A valid [GraphQL API configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-graphql).
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateGraphQLConfig(groupId: any, appId: any, graphQLConfig: GraphQLConfig, options?: any): AxiosPromise<void> {
            return localVarFp.adminUpdateGraphQLConfig(groupId, appId, graphQLConfig, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * GraphqlApi - interface
 * @export
 * @interface GraphqlApi
 */
export interface GraphqlApiInterface {
    /**
     * Create a new [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/).
     * @summary Create a custom resolver
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {CustomResolver} customResolver A valid [custom resolver configuration](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-custom-resolver) object.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApiInterface
     */
    adminCreateCustomResolver(groupId: any, appId: any, customResolver: CustomResolver, options?: AxiosRequestConfig): AxiosPromise<CustomResolver>;

    /**
     * Delete an existing [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
     * @summary Delete a custom resolver
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApiInterface
     */
    adminDeleteCustomResolver(groupId: any, appId: any, customResolverId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Get all [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configurations from your app\'s GraphQL API.
     * @summary Get all custom resolvers
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApiInterface
     */
    adminGetAllCustomResolvers(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Get a specific [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
     * @summary Get a custom resolver
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApiInterface
     */
    adminGetCustomResolver(groupId: any, appId: any, customResolverId: any, options?: AxiosRequestConfig): AxiosPromise<CustomResolver>;

    /**
     * Get your app\'s [GraphQL API](https://www.mongodb.com/docs/atlas/app-services/graphql/) configuration.
     * @summary Get GraphQL API Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApiInterface
     */
    adminGetGraphQLConfig(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<GraphQLConfig>;

    /**
     * Get the current validation level and action for reads and writes.
     * @summary Get validation settings
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApiInterface
     */
    adminGetGraphQLValidationSettings(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<GraphQLValidationSettings>;

    /**
     * Modify an existing [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
     * @summary Modify a custom resolver
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
     * @param {CustomResolver} customResolver A valid, updated [custom resolver configuration](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-custom-resolver) object.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApiInterface
     */
    adminModifyCustomResolver(groupId: any, appId: any, customResolverId: any, customResolver: CustomResolver, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Run a query or mutation as a system user that bypasses authentication and data access rules. You can access metadata about your API, including its schema, with an [introspection](https://graphql.org/learn/introspection/) query.
     * @summary Run a query or mutation
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminRunGraphQLOperationRequest} [adminRunGraphQLOperationRequest] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApiInterface
     */
    adminRunGraphQLOperation(groupId: any, appId: any, adminRunGraphQLOperationRequest?: AdminRunGraphQLOperationRequest, options?: AxiosRequestConfig): AxiosPromise<AdminRunGraphQLOperation200Response>;

    /**
     * Set the validation level and action for reads and writes.
     * @summary Modify validation settings
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {GraphQLValidationSettings} graphQLValidationSettings The updated validation levels and actions.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApiInterface
     */
    adminSetGraphQLValidationSettings(groupId: any, appId: any, graphQLValidationSettings: GraphQLValidationSettings, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Update your app\'s [GraphQL API](https://www.mongodb.com/docs/atlas/app-services/graphql/) configuration.
     * @summary Update GraphQL API Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {GraphQLConfig} graphQLConfig A valid [GraphQL API configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-graphql).
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApiInterface
     */
    adminUpdateGraphQLConfig(groupId: any, appId: any, graphQLConfig: GraphQLConfig, options?: AxiosRequestConfig): AxiosPromise<void>;

}

/**
 * GraphqlApi - object-oriented interface
 * @export
 * @class GraphqlApi
 * @extends {BaseAPI}
 */
export class GraphqlApi extends BaseAPI implements GraphqlApiInterface {
    /**
     * Create a new [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/).
     * @summary Create a custom resolver
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {CustomResolver} customResolver A valid [custom resolver configuration](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-custom-resolver) object.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApi
     */
    public adminCreateCustomResolver(groupId: any, appId: any, customResolver: CustomResolver, options?: AxiosRequestConfig) {
        return GraphqlApiFp(this.configuration).adminCreateCustomResolver(groupId, appId, customResolver, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete an existing [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
     * @summary Delete a custom resolver
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApi
     */
    public adminDeleteCustomResolver(groupId: any, appId: any, customResolverId: any, options?: AxiosRequestConfig) {
        return GraphqlApiFp(this.configuration).adminDeleteCustomResolver(groupId, appId, customResolverId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get all [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configurations from your app\'s GraphQL API.
     * @summary Get all custom resolvers
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApi
     */
    public adminGetAllCustomResolvers(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return GraphqlApiFp(this.configuration).adminGetAllCustomResolvers(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get a specific [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
     * @summary Get a custom resolver
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApi
     */
    public adminGetCustomResolver(groupId: any, appId: any, customResolverId: any, options?: AxiosRequestConfig) {
        return GraphqlApiFp(this.configuration).adminGetCustomResolver(groupId, appId, customResolverId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get your app\'s [GraphQL API](https://www.mongodb.com/docs/atlas/app-services/graphql/) configuration.
     * @summary Get GraphQL API Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApi
     */
    public adminGetGraphQLConfig(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return GraphqlApiFp(this.configuration).adminGetGraphQLConfig(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get the current validation level and action for reads and writes.
     * @summary Get validation settings
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApi
     */
    public adminGetGraphQLValidationSettings(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return GraphqlApiFp(this.configuration).adminGetGraphQLValidationSettings(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Modify an existing [custom resolver](https://www.mongodb.com/docs/realm/graphql/custom-resolvers/) configuration.
     * @summary Modify a custom resolver
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} customResolverId The unique &#x60;_id&#x60; value of a custom resolver.
     * @param {CustomResolver} customResolver A valid, updated [custom resolver configuration](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-custom-resolver) object.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApi
     */
    public adminModifyCustomResolver(groupId: any, appId: any, customResolverId: any, customResolver: CustomResolver, options?: AxiosRequestConfig) {
        return GraphqlApiFp(this.configuration).adminModifyCustomResolver(groupId, appId, customResolverId, customResolver, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Run a query or mutation as a system user that bypasses authentication and data access rules. You can access metadata about your API, including its schema, with an [introspection](https://graphql.org/learn/introspection/) query.
     * @summary Run a query or mutation
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminRunGraphQLOperationRequest} [adminRunGraphQLOperationRequest] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApi
     */
    public adminRunGraphQLOperation(groupId: any, appId: any, adminRunGraphQLOperationRequest?: AdminRunGraphQLOperationRequest, options?: AxiosRequestConfig) {
        return GraphqlApiFp(this.configuration).adminRunGraphQLOperation(groupId, appId, adminRunGraphQLOperationRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Set the validation level and action for reads and writes.
     * @summary Modify validation settings
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {GraphQLValidationSettings} graphQLValidationSettings The updated validation levels and actions.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApi
     */
    public adminSetGraphQLValidationSettings(groupId: any, appId: any, graphQLValidationSettings: GraphQLValidationSettings, options?: AxiosRequestConfig) {
        return GraphqlApiFp(this.configuration).adminSetGraphQLValidationSettings(groupId, appId, graphQLValidationSettings, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update your app\'s [GraphQL API](https://www.mongodb.com/docs/atlas/app-services/graphql/) configuration.
     * @summary Update GraphQL API Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {GraphQLConfig} graphQLConfig A valid [GraphQL API configuration object](https://www.mongodb.com/docs/atlas/app-services/reference/config/graphql#std-label-appconfig-graphql).
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GraphqlApi
     */
    public adminUpdateGraphQLConfig(groupId: any, appId: any, graphQLConfig: GraphQLConfig, options?: AxiosRequestConfig) {
        return GraphqlApiFp(this.configuration).adminUpdateGraphQLConfig(groupId, appId, graphQLConfig, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * HostingApi - axios parameter creator
 * @export
 */
export const HostingApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Enable or disable App Services Hosting for your app. Changes to hosting can take up to 15 minutes to take effect. This endpoint does not notify you when the changes have taken effect, only that the change operation was successfully received by the server.  You can see if the hosting enablement/disablement is complete by calling the [Get Hosting Configuration](#operation/adminGetHostingConfig) endpoint. 
         * @summary Enable/Disable Hosting
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminEnableDisableHostingRequest} [adminEnableDisableHostingRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminEnableDisableHosting: async (groupId: any, appId: any, adminEnableDisableHostingRequest?: AdminEnableDisableHostingRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminEnableDisableHosting', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminEnableDisableHosting', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/hosting/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminEnableDisableHostingRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary List all hosted assets
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAllHostedAssets: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetAllHostedAssets', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetAllHostedAssets', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/hosting/assets`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Retrieve metadata for a specific hosted asset
         * @param {any} path The resource path of a hosted asset.
         * @param {any} [prefix] Return only those assets where the resource path begins with the specified prefix.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetHostedAsset: async (path: any, prefix?: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'path' is not null or undefined
            assertParamExists('adminGetHostedAsset', 'path', path)
            const localVarPath = `/groups/{groupId}/apps/{appId}/hosting/assets/asset`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (path !== undefined) {
                localVarQueryParameter['path'] = path;
            }

            if (prefix !== undefined) {
                localVarQueryParameter['prefix'] = prefix;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Returns the current hosting configuration. Hosting is active if the response includes `status: \"setup_ok\"`. 
         * @summary Get Hosting Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetHostingConfig: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetHostingConfig', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetHostingConfig', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/hosting/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Move or copy a hosted asset to a new resource path.
         * @summary Move or copy a hosted asset
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminMoveCopyHostedAssetRequest} adminMoveCopyHostedAssetRequest The hosted asset file and its metadata. (Must use &#x60;Content-Type: multipart/mixed&#x60;)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminMoveCopyHostedAsset: async (groupId: any, appId: any, adminMoveCopyHostedAssetRequest: AdminMoveCopyHostedAssetRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminMoveCopyHostedAsset', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminMoveCopyHostedAsset', 'appId', appId)
            // verify required parameter 'adminMoveCopyHostedAssetRequest' is not null or undefined
            assertParamExists('adminMoveCopyHostedAsset', 'adminMoveCopyHostedAssetRequest', adminMoveCopyHostedAssetRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/hosting/assets`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminMoveCopyHostedAssetRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update the metadata attributes of a hosted asset at a specific resource path.
         * @summary Update the metadata attributes of a hosted asset
         * @param {any} path The resource path of a hosted asset.
         * @param {AdminUpdateHostedAssetRequest} adminUpdateHostedAssetRequest The new metadata attributes for the hosted asset. These attributes replace all existing attributes for the file.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateHostedAsset: async (path: any, adminUpdateHostedAssetRequest: AdminUpdateHostedAssetRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'path' is not null or undefined
            assertParamExists('adminUpdateHostedAsset', 'path', path)
            // verify required parameter 'adminUpdateHostedAssetRequest' is not null or undefined
            assertParamExists('adminUpdateHostedAsset', 'adminUpdateHostedAssetRequest', adminUpdateHostedAssetRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/hosting/assets/asset`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (path !== undefined) {
                localVarQueryParameter['path'] = path;
            }



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminUpdateHostedAssetRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Upload or replace a hosted asset at a specific resource path.
         * @summary Upload or replace a hosted asset
         * @param {any} path The resource path of a hosted asset.
         * @param {AdminUploadHostedAssetRequest} adminUploadHostedAssetRequest The hosted asset file and its metadata. (Must use &#x60;Content-Type: multipart/mixed&#x60;)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUploadHostedAsset: async (path: any, adminUploadHostedAssetRequest: AdminUploadHostedAssetRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'path' is not null or undefined
            assertParamExists('adminUploadHostedAsset', 'path', path)
            // verify required parameter 'adminUploadHostedAssetRequest' is not null or undefined
            assertParamExists('adminUploadHostedAsset', 'adminUploadHostedAssetRequest', adminUploadHostedAssetRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/hosting/assets/asset`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (path !== undefined) {
                localVarQueryParameter['path'] = path;
            }



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminUploadHostedAssetRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * HostingApi - functional programming interface
 * @export
 */
export const HostingApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = HostingApiAxiosParamCreator(configuration)
    return {
        /**
         * Enable or disable App Services Hosting for your app. Changes to hosting can take up to 15 minutes to take effect. This endpoint does not notify you when the changes have taken effect, only that the change operation was successfully received by the server.  You can see if the hosting enablement/disablement is complete by calling the [Get Hosting Configuration](#operation/adminGetHostingConfig) endpoint. 
         * @summary Enable/Disable Hosting
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminEnableDisableHostingRequest} [adminEnableDisableHostingRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminEnableDisableHosting(groupId: any, appId: any, adminEnableDisableHostingRequest?: AdminEnableDisableHostingRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminEnableDisableHosting(groupId, appId, adminEnableDisableHostingRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary List all hosted assets
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetAllHostedAssets(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetAllHostedAssets(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Retrieve metadata for a specific hosted asset
         * @param {any} path The resource path of a hosted asset.
         * @param {any} [prefix] Return only those assets where the resource path begins with the specified prefix.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetHostedAsset(path: any, prefix?: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HostedAssetMetadata>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetHostedAsset(path, prefix, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Returns the current hosting configuration. Hosting is active if the response includes `status: \"setup_ok\"`. 
         * @summary Get Hosting Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetHostingConfig(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HostingConfiguration>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetHostingConfig(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Move or copy a hosted asset to a new resource path.
         * @summary Move or copy a hosted asset
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminMoveCopyHostedAssetRequest} adminMoveCopyHostedAssetRequest The hosted asset file and its metadata. (Must use &#x60;Content-Type: multipart/mixed&#x60;)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminMoveCopyHostedAsset(groupId: any, appId: any, adminMoveCopyHostedAssetRequest: AdminMoveCopyHostedAssetRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminMoveCopyHostedAsset(groupId, appId, adminMoveCopyHostedAssetRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update the metadata attributes of a hosted asset at a specific resource path.
         * @summary Update the metadata attributes of a hosted asset
         * @param {any} path The resource path of a hosted asset.
         * @param {AdminUpdateHostedAssetRequest} adminUpdateHostedAssetRequest The new metadata attributes for the hosted asset. These attributes replace all existing attributes for the file.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateHostedAsset(path: any, adminUpdateHostedAssetRequest: AdminUpdateHostedAssetRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateHostedAsset(path, adminUpdateHostedAssetRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Upload or replace a hosted asset at a specific resource path.
         * @summary Upload or replace a hosted asset
         * @param {any} path The resource path of a hosted asset.
         * @param {AdminUploadHostedAssetRequest} adminUploadHostedAssetRequest The hosted asset file and its metadata. (Must use &#x60;Content-Type: multipart/mixed&#x60;)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUploadHostedAsset(path: any, adminUploadHostedAssetRequest: AdminUploadHostedAssetRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUploadHostedAsset(path, adminUploadHostedAssetRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * HostingApi - factory interface
 * @export
 */
export const HostingApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = HostingApiFp(configuration)
    return {
        /**
         * Enable or disable App Services Hosting for your app. Changes to hosting can take up to 15 minutes to take effect. This endpoint does not notify you when the changes have taken effect, only that the change operation was successfully received by the server.  You can see if the hosting enablement/disablement is complete by calling the [Get Hosting Configuration](#operation/adminGetHostingConfig) endpoint. 
         * @summary Enable/Disable Hosting
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminEnableDisableHostingRequest} [adminEnableDisableHostingRequest] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminEnableDisableHosting(groupId: any, appId: any, adminEnableDisableHostingRequest?: AdminEnableDisableHostingRequest, options?: any): AxiosPromise<void> {
            return localVarFp.adminEnableDisableHosting(groupId, appId, adminEnableDisableHostingRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary List all hosted assets
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAllHostedAssets(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetAllHostedAssets(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Retrieve metadata for a specific hosted asset
         * @param {any} path The resource path of a hosted asset.
         * @param {any} [prefix] Return only those assets where the resource path begins with the specified prefix.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetHostedAsset(path: any, prefix?: any, options?: any): AxiosPromise<HostedAssetMetadata> {
            return localVarFp.adminGetHostedAsset(path, prefix, options).then((request) => request(axios, basePath));
        },
        /**
         * Returns the current hosting configuration. Hosting is active if the response includes `status: \"setup_ok\"`. 
         * @summary Get Hosting Configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetHostingConfig(groupId: any, appId: any, options?: any): AxiosPromise<HostingConfiguration> {
            return localVarFp.adminGetHostingConfig(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Move or copy a hosted asset to a new resource path.
         * @summary Move or copy a hosted asset
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminMoveCopyHostedAssetRequest} adminMoveCopyHostedAssetRequest The hosted asset file and its metadata. (Must use &#x60;Content-Type: multipart/mixed&#x60;)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminMoveCopyHostedAsset(groupId: any, appId: any, adminMoveCopyHostedAssetRequest: AdminMoveCopyHostedAssetRequest, options?: any): AxiosPromise<void> {
            return localVarFp.adminMoveCopyHostedAsset(groupId, appId, adminMoveCopyHostedAssetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Update the metadata attributes of a hosted asset at a specific resource path.
         * @summary Update the metadata attributes of a hosted asset
         * @param {any} path The resource path of a hosted asset.
         * @param {AdminUpdateHostedAssetRequest} adminUpdateHostedAssetRequest The new metadata attributes for the hosted asset. These attributes replace all existing attributes for the file.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateHostedAsset(path: any, adminUpdateHostedAssetRequest: AdminUpdateHostedAssetRequest, options?: any): AxiosPromise<void> {
            return localVarFp.adminUpdateHostedAsset(path, adminUpdateHostedAssetRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Upload or replace a hosted asset at a specific resource path.
         * @summary Upload or replace a hosted asset
         * @param {any} path The resource path of a hosted asset.
         * @param {AdminUploadHostedAssetRequest} adminUploadHostedAssetRequest The hosted asset file and its metadata. (Must use &#x60;Content-Type: multipart/mixed&#x60;)
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUploadHostedAsset(path: any, adminUploadHostedAssetRequest: AdminUploadHostedAssetRequest, options?: any): AxiosPromise<void> {
            return localVarFp.adminUploadHostedAsset(path, adminUploadHostedAssetRequest, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * HostingApi - interface
 * @export
 * @interface HostingApi
 */
export interface HostingApiInterface {
    /**
     * Enable or disable App Services Hosting for your app. Changes to hosting can take up to 15 minutes to take effect. This endpoint does not notify you when the changes have taken effect, only that the change operation was successfully received by the server.  You can see if the hosting enablement/disablement is complete by calling the [Get Hosting Configuration](#operation/adminGetHostingConfig) endpoint. 
     * @summary Enable/Disable Hosting
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminEnableDisableHostingRequest} [adminEnableDisableHostingRequest] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApiInterface
     */
    adminEnableDisableHosting(groupId: any, appId: any, adminEnableDisableHostingRequest?: AdminEnableDisableHostingRequest, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * 
     * @summary List all hosted assets
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApiInterface
     */
    adminGetAllHostedAssets(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * 
     * @summary Retrieve metadata for a specific hosted asset
     * @param {any} path The resource path of a hosted asset.
     * @param {any} [prefix] Return only those assets where the resource path begins with the specified prefix.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApiInterface
     */
    adminGetHostedAsset(path: any, prefix?: any, options?: AxiosRequestConfig): AxiosPromise<HostedAssetMetadata>;

    /**
     * Returns the current hosting configuration. Hosting is active if the response includes `status: \"setup_ok\"`. 
     * @summary Get Hosting Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApiInterface
     */
    adminGetHostingConfig(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<HostingConfiguration>;

    /**
     * Move or copy a hosted asset to a new resource path.
     * @summary Move or copy a hosted asset
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminMoveCopyHostedAssetRequest} adminMoveCopyHostedAssetRequest The hosted asset file and its metadata. (Must use &#x60;Content-Type: multipart/mixed&#x60;)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApiInterface
     */
    adminMoveCopyHostedAsset(groupId: any, appId: any, adminMoveCopyHostedAssetRequest: AdminMoveCopyHostedAssetRequest, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Update the metadata attributes of a hosted asset at a specific resource path.
     * @summary Update the metadata attributes of a hosted asset
     * @param {any} path The resource path of a hosted asset.
     * @param {AdminUpdateHostedAssetRequest} adminUpdateHostedAssetRequest The new metadata attributes for the hosted asset. These attributes replace all existing attributes for the file.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApiInterface
     */
    adminUpdateHostedAsset(path: any, adminUpdateHostedAssetRequest: AdminUpdateHostedAssetRequest, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Upload or replace a hosted asset at a specific resource path.
     * @summary Upload or replace a hosted asset
     * @param {any} path The resource path of a hosted asset.
     * @param {AdminUploadHostedAssetRequest} adminUploadHostedAssetRequest The hosted asset file and its metadata. (Must use &#x60;Content-Type: multipart/mixed&#x60;)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApiInterface
     */
    adminUploadHostedAsset(path: any, adminUploadHostedAssetRequest: AdminUploadHostedAssetRequest, options?: AxiosRequestConfig): AxiosPromise<void>;

}

/**
 * HostingApi - object-oriented interface
 * @export
 * @class HostingApi
 * @extends {BaseAPI}
 */
export class HostingApi extends BaseAPI implements HostingApiInterface {
    /**
     * Enable or disable App Services Hosting for your app. Changes to hosting can take up to 15 minutes to take effect. This endpoint does not notify you when the changes have taken effect, only that the change operation was successfully received by the server.  You can see if the hosting enablement/disablement is complete by calling the [Get Hosting Configuration](#operation/adminGetHostingConfig) endpoint. 
     * @summary Enable/Disable Hosting
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminEnableDisableHostingRequest} [adminEnableDisableHostingRequest] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApi
     */
    public adminEnableDisableHosting(groupId: any, appId: any, adminEnableDisableHostingRequest?: AdminEnableDisableHostingRequest, options?: AxiosRequestConfig) {
        return HostingApiFp(this.configuration).adminEnableDisableHosting(groupId, appId, adminEnableDisableHostingRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary List all hosted assets
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApi
     */
    public adminGetAllHostedAssets(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return HostingApiFp(this.configuration).adminGetAllHostedAssets(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Retrieve metadata for a specific hosted asset
     * @param {any} path The resource path of a hosted asset.
     * @param {any} [prefix] Return only those assets where the resource path begins with the specified prefix.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApi
     */
    public adminGetHostedAsset(path: any, prefix?: any, options?: AxiosRequestConfig) {
        return HostingApiFp(this.configuration).adminGetHostedAsset(path, prefix, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Returns the current hosting configuration. Hosting is active if the response includes `status: \"setup_ok\"`. 
     * @summary Get Hosting Configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApi
     */
    public adminGetHostingConfig(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return HostingApiFp(this.configuration).adminGetHostingConfig(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Move or copy a hosted asset to a new resource path.
     * @summary Move or copy a hosted asset
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminMoveCopyHostedAssetRequest} adminMoveCopyHostedAssetRequest The hosted asset file and its metadata. (Must use &#x60;Content-Type: multipart/mixed&#x60;)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApi
     */
    public adminMoveCopyHostedAsset(groupId: any, appId: any, adminMoveCopyHostedAssetRequest: AdminMoveCopyHostedAssetRequest, options?: AxiosRequestConfig) {
        return HostingApiFp(this.configuration).adminMoveCopyHostedAsset(groupId, appId, adminMoveCopyHostedAssetRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update the metadata attributes of a hosted asset at a specific resource path.
     * @summary Update the metadata attributes of a hosted asset
     * @param {any} path The resource path of a hosted asset.
     * @param {AdminUpdateHostedAssetRequest} adminUpdateHostedAssetRequest The new metadata attributes for the hosted asset. These attributes replace all existing attributes for the file.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApi
     */
    public adminUpdateHostedAsset(path: any, adminUpdateHostedAssetRequest: AdminUpdateHostedAssetRequest, options?: AxiosRequestConfig) {
        return HostingApiFp(this.configuration).adminUpdateHostedAsset(path, adminUpdateHostedAssetRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Upload or replace a hosted asset at a specific resource path.
     * @summary Upload or replace a hosted asset
     * @param {any} path The resource path of a hosted asset.
     * @param {AdminUploadHostedAssetRequest} adminUploadHostedAssetRequest The hosted asset file and its metadata. (Must use &#x60;Content-Type: multipart/mixed&#x60;)
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof HostingApi
     */
    public adminUploadHostedAsset(path: any, adminUploadHostedAssetRequest: AdminUploadHostedAssetRequest, options?: AxiosRequestConfig) {
        return HostingApiFp(this.configuration).adminUploadHostedAsset(path, adminUploadHostedAssetRequest, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * LogForwardersApi - axios parameter creator
 * @export
 */
export const LogForwardersApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @summary Create a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {LogForwarder} body A log forwarder configuration
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createLogForwarder: async (groupId: any, appId: any, body: LogForwarder, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('createLogForwarder', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('createLogForwarder', 'appId', appId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('createLogForwarder', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/log_forwarders`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Delete a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteGwarder: async (groupId: any, appId: any, forwarderId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('deleteGwarder', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('deleteGwarder', 'appId', appId)
            // verify required parameter 'forwarderId' is not null or undefined
            assertParamExists('deleteGwarder', 'forwarderId', forwarderId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/log_forwarders/{forwarderId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"forwarderId"}}`, encodeURIComponent(String(forwarderId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Disable a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        disableLogForwarder: async (groupId: any, appId: any, forwarderId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('disableLogForwarder', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('disableLogForwarder', 'appId', appId)
            // verify required parameter 'forwarderId' is not null or undefined
            assertParamExists('disableLogForwarder', 'forwarderId', forwarderId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/log_forwarders/{forwarderId}/disable`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"forwarderId"}}`, encodeURIComponent(String(forwarderId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Enable a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        enableLogForwarder: async (groupId: any, appId: any, forwarderId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('enableLogForwarder', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('enableLogForwarder', 'appId', appId)
            // verify required parameter 'forwarderId' is not null or undefined
            assertParamExists('enableLogForwarder', 'forwarderId', forwarderId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/log_forwarders/{forwarderId}/enable`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"forwarderId"}}`, encodeURIComponent(String(forwarderId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Get a specific log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getLogForwarder: async (groupId: any, appId: any, forwarderId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('getLogForwarder', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('getLogForwarder', 'appId', appId)
            // verify required parameter 'forwarderId' is not null or undefined
            assertParamExists('getLogForwarder', 'forwarderId', forwarderId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/log_forwarders/{forwarderId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"forwarderId"}}`, encodeURIComponent(String(forwarderId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary List log forwarders.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listLogForwarders: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('listLogForwarders', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('listLogForwarders', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/log_forwarders`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Update a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {LogForwarder} body A log forwarder configuration
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateLogForwarder: async (groupId: any, appId: any, forwarderId: any, body: LogForwarder, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('updateLogForwarder', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('updateLogForwarder', 'appId', appId)
            // verify required parameter 'forwarderId' is not null or undefined
            assertParamExists('updateLogForwarder', 'forwarderId', forwarderId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('updateLogForwarder', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/log_forwarders/{forwarderId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"forwarderId"}}`, encodeURIComponent(String(forwarderId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * LogForwardersApi - functional programming interface
 * @export
 */
export const LogForwardersApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = LogForwardersApiAxiosParamCreator(configuration)
    return {
        /**
         * 
         * @summary Create a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {LogForwarder} body A log forwarder configuration
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async createLogForwarder(groupId: any, appId: any, body: LogForwarder, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<LogForwarder>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.createLogForwarder(groupId, appId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Delete a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async deleteGwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.deleteGwarder(groupId, appId, forwarderId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Disable a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async disableLogForwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.disableLogForwarder(groupId, appId, forwarderId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Enable a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async enableLogForwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.enableLogForwarder(groupId, appId, forwarderId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Get a specific log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getLogForwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<LogForwarder>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getLogForwarder(groupId, appId, forwarderId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary List log forwarders.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async listLogForwarders(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.listLogForwarders(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Update a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {LogForwarder} body A log forwarder configuration
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async updateLogForwarder(groupId: any, appId: any, forwarderId: any, body: LogForwarder, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<LogForwarder>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.updateLogForwarder(groupId, appId, forwarderId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * LogForwardersApi - factory interface
 * @export
 */
export const LogForwardersApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = LogForwardersApiFp(configuration)
    return {
        /**
         * 
         * @summary Create a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {LogForwarder} body A log forwarder configuration
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        createLogForwarder(groupId: any, appId: any, body: LogForwarder, options?: any): AxiosPromise<LogForwarder> {
            return localVarFp.createLogForwarder(groupId, appId, body, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Delete a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteGwarder(groupId: any, appId: any, forwarderId: any, options?: any): AxiosPromise<void> {
            return localVarFp.deleteGwarder(groupId, appId, forwarderId, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Disable a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        disableLogForwarder(groupId: any, appId: any, forwarderId: any, options?: any): AxiosPromise<void> {
            return localVarFp.disableLogForwarder(groupId, appId, forwarderId, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Enable a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        enableLogForwarder(groupId: any, appId: any, forwarderId: any, options?: any): AxiosPromise<void> {
            return localVarFp.enableLogForwarder(groupId, appId, forwarderId, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Get a specific log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getLogForwarder(groupId: any, appId: any, forwarderId: any, options?: any): AxiosPromise<LogForwarder> {
            return localVarFp.getLogForwarder(groupId, appId, forwarderId, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary List log forwarders.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listLogForwarders(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.listLogForwarders(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Update a log forwarder.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} forwarderId The _id ObjectID of a log forwarder.
         * @param {LogForwarder} body A log forwarder configuration
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateLogForwarder(groupId: any, appId: any, forwarderId: any, body: LogForwarder, options?: any): AxiosPromise<LogForwarder> {
            return localVarFp.updateLogForwarder(groupId, appId, forwarderId, body, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * LogForwardersApi - interface
 * @export
 * @interface LogForwardersApi
 */
export interface LogForwardersApiInterface {
    /**
     * 
     * @summary Create a log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {LogForwarder} body A log forwarder configuration
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApiInterface
     */
    createLogForwarder(groupId: any, appId: any, body: LogForwarder, options?: AxiosRequestConfig): AxiosPromise<LogForwarder>;

    /**
     * 
     * @summary Delete a log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} forwarderId The _id ObjectID of a log forwarder.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApiInterface
     */
    deleteGwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * 
     * @summary Disable a log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} forwarderId The _id ObjectID of a log forwarder.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApiInterface
     */
    disableLogForwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * 
     * @summary Enable a log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} forwarderId The _id ObjectID of a log forwarder.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApiInterface
     */
    enableLogForwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * 
     * @summary Get a specific log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} forwarderId The _id ObjectID of a log forwarder.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApiInterface
     */
    getLogForwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig): AxiosPromise<LogForwarder>;

    /**
     * 
     * @summary List log forwarders.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApiInterface
     */
    listLogForwarders(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * 
     * @summary Update a log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} forwarderId The _id ObjectID of a log forwarder.
     * @param {LogForwarder} body A log forwarder configuration
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApiInterface
     */
    updateLogForwarder(groupId: any, appId: any, forwarderId: any, body: LogForwarder, options?: AxiosRequestConfig): AxiosPromise<LogForwarder>;

}

/**
 * LogForwardersApi - object-oriented interface
 * @export
 * @class LogForwardersApi
 * @extends {BaseAPI}
 */
export class LogForwardersApi extends BaseAPI implements LogForwardersApiInterface {
    /**
     * 
     * @summary Create a log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {LogForwarder} body A log forwarder configuration
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApi
     */
    public createLogForwarder(groupId: any, appId: any, body: LogForwarder, options?: AxiosRequestConfig) {
        return LogForwardersApiFp(this.configuration).createLogForwarder(groupId, appId, body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Delete a log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} forwarderId The _id ObjectID of a log forwarder.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApi
     */
    public deleteGwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig) {
        return LogForwardersApiFp(this.configuration).deleteGwarder(groupId, appId, forwarderId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Disable a log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} forwarderId The _id ObjectID of a log forwarder.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApi
     */
    public disableLogForwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig) {
        return LogForwardersApiFp(this.configuration).disableLogForwarder(groupId, appId, forwarderId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Enable a log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} forwarderId The _id ObjectID of a log forwarder.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApi
     */
    public enableLogForwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig) {
        return LogForwardersApiFp(this.configuration).enableLogForwarder(groupId, appId, forwarderId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Get a specific log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} forwarderId The _id ObjectID of a log forwarder.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApi
     */
    public getLogForwarder(groupId: any, appId: any, forwarderId: any, options?: AxiosRequestConfig) {
        return LogForwardersApiFp(this.configuration).getLogForwarder(groupId, appId, forwarderId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary List log forwarders.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApi
     */
    public listLogForwarders(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return LogForwardersApiFp(this.configuration).listLogForwarders(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Update a log forwarder.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} forwarderId The _id ObjectID of a log forwarder.
     * @param {LogForwarder} body A log forwarder configuration
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogForwardersApi
     */
    public updateLogForwarder(groupId: any, appId: any, forwarderId: any, body: LogForwarder, options?: AxiosRequestConfig) {
        return LogForwardersApiFp(this.configuration).updateLogForwarder(groupId, appId, forwarderId, body, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * LogsApi - axios parameter creator
 * @export
 */
export const LogsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @summary Retrieve App Services logs
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [coId] Return only log messages associated with the given request Correlation ID.
         * @param {any} [errorsOnly] The value of this field does not matter. If included in the request, this endpoint only returns error logs (even if the value is set to &#x60;false&#x60;). If this field is excluded from the request, this endpoint only returns non-error logs.
         * @param {any} [userId] Return only log messages associated with the given &#x60;user_id&#x60;.
         * @param {any} [startDate] The date and time in ISO 8601 at which to begin returning results, exclusive.
         * @param {any} [endDate] The date and time in ISO 8601 at which to cease returning results, inclusive.
         * @param {any} [skip] The offset number of matching log entries to skip before including them in the response.
         * @param {any} [limit] The maximum number of log entries to include in the response. If the query matches more than this many logs, it returns documents in ascending order by date until the limit is reached.
         * @param {AdminGetLogsTypeEnum} [type] The kind of log you would like to retrieve.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetLogs: async (groupId: any, appId: any, coId?: any, errorsOnly?: any, userId?: any, startDate?: any, endDate?: any, skip?: any, limit?: any, type?: AdminGetLogsTypeEnum, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetLogs', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetLogs', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/logs`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (coId !== undefined) {
                localVarQueryParameter['co_id'] = coId;
            }

            if (errorsOnly !== undefined) {
                localVarQueryParameter['errors_only'] = errorsOnly;
            }

            if (userId !== undefined) {
                localVarQueryParameter['user_id'] = userId;
            }

            if (startDate !== undefined) {
                localVarQueryParameter['start_date'] = startDate;
            }

            if (endDate !== undefined) {
                localVarQueryParameter['end_date'] = endDate;
            }

            if (skip !== undefined) {
                localVarQueryParameter['skip'] = skip;
            }

            if (limit !== undefined) {
                localVarQueryParameter['limit'] = limit;
            }

            if (type !== undefined) {
                localVarQueryParameter['type'] = type;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * LogsApi - functional programming interface
 * @export
 */
export const LogsApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = LogsApiAxiosParamCreator(configuration)
    return {
        /**
         * 
         * @summary Retrieve App Services logs
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [coId] Return only log messages associated with the given request Correlation ID.
         * @param {any} [errorsOnly] The value of this field does not matter. If included in the request, this endpoint only returns error logs (even if the value is set to &#x60;false&#x60;). If this field is excluded from the request, this endpoint only returns non-error logs.
         * @param {any} [userId] Return only log messages associated with the given &#x60;user_id&#x60;.
         * @param {any} [startDate] The date and time in ISO 8601 at which to begin returning results, exclusive.
         * @param {any} [endDate] The date and time in ISO 8601 at which to cease returning results, inclusive.
         * @param {any} [skip] The offset number of matching log entries to skip before including them in the response.
         * @param {any} [limit] The maximum number of log entries to include in the response. If the query matches more than this many logs, it returns documents in ascending order by date until the limit is reached.
         * @param {AdminGetLogsTypeEnum} [type] The kind of log you would like to retrieve.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetLogs(groupId: any, appId: any, coId?: any, errorsOnly?: any, userId?: any, startDate?: any, endDate?: any, skip?: any, limit?: any, type?: AdminGetLogsTypeEnum, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminGetLogs200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetLogs(groupId, appId, coId, errorsOnly, userId, startDate, endDate, skip, limit, type, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * LogsApi - factory interface
 * @export
 */
export const LogsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = LogsApiFp(configuration)
    return {
        /**
         * 
         * @summary Retrieve App Services logs
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [coId] Return only log messages associated with the given request Correlation ID.
         * @param {any} [errorsOnly] The value of this field does not matter. If included in the request, this endpoint only returns error logs (even if the value is set to &#x60;false&#x60;). If this field is excluded from the request, this endpoint only returns non-error logs.
         * @param {any} [userId] Return only log messages associated with the given &#x60;user_id&#x60;.
         * @param {any} [startDate] The date and time in ISO 8601 at which to begin returning results, exclusive.
         * @param {any} [endDate] The date and time in ISO 8601 at which to cease returning results, inclusive.
         * @param {any} [skip] The offset number of matching log entries to skip before including them in the response.
         * @param {any} [limit] The maximum number of log entries to include in the response. If the query matches more than this many logs, it returns documents in ascending order by date until the limit is reached.
         * @param {AdminGetLogsTypeEnum} [type] The kind of log you would like to retrieve.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetLogs(groupId: any, appId: any, coId?: any, errorsOnly?: any, userId?: any, startDate?: any, endDate?: any, skip?: any, limit?: any, type?: AdminGetLogsTypeEnum, options?: any): AxiosPromise<AdminGetLogs200Response> {
            return localVarFp.adminGetLogs(groupId, appId, coId, errorsOnly, userId, startDate, endDate, skip, limit, type, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * LogsApi - interface
 * @export
 * @interface LogsApi
 */
export interface LogsApiInterface {
    /**
     * 
     * @summary Retrieve App Services logs
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [coId] Return only log messages associated with the given request Correlation ID.
     * @param {any} [errorsOnly] The value of this field does not matter. If included in the request, this endpoint only returns error logs (even if the value is set to &#x60;false&#x60;). If this field is excluded from the request, this endpoint only returns non-error logs.
     * @param {any} [userId] Return only log messages associated with the given &#x60;user_id&#x60;.
     * @param {any} [startDate] The date and time in ISO 8601 at which to begin returning results, exclusive.
     * @param {any} [endDate] The date and time in ISO 8601 at which to cease returning results, inclusive.
     * @param {any} [skip] The offset number of matching log entries to skip before including them in the response.
     * @param {any} [limit] The maximum number of log entries to include in the response. If the query matches more than this many logs, it returns documents in ascending order by date until the limit is reached.
     * @param {AdminGetLogsTypeEnum} [type] The kind of log you would like to retrieve.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogsApiInterface
     */
    adminGetLogs(groupId: any, appId: any, coId?: any, errorsOnly?: any, userId?: any, startDate?: any, endDate?: any, skip?: any, limit?: any, type?: AdminGetLogsTypeEnum, options?: AxiosRequestConfig): AxiosPromise<AdminGetLogs200Response>;

}

/**
 * LogsApi - object-oriented interface
 * @export
 * @class LogsApi
 * @extends {BaseAPI}
 */
export class LogsApi extends BaseAPI implements LogsApiInterface {
    /**
     * 
     * @summary Retrieve App Services logs
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [coId] Return only log messages associated with the given request Correlation ID.
     * @param {any} [errorsOnly] The value of this field does not matter. If included in the request, this endpoint only returns error logs (even if the value is set to &#x60;false&#x60;). If this field is excluded from the request, this endpoint only returns non-error logs.
     * @param {any} [userId] Return only log messages associated with the given &#x60;user_id&#x60;.
     * @param {any} [startDate] The date and time in ISO 8601 at which to begin returning results, exclusive.
     * @param {any} [endDate] The date and time in ISO 8601 at which to cease returning results, inclusive.
     * @param {any} [skip] The offset number of matching log entries to skip before including them in the response.
     * @param {any} [limit] The maximum number of log entries to include in the response. If the query matches more than this many logs, it returns documents in ascending order by date until the limit is reached.
     * @param {AdminGetLogsTypeEnum} [type] The kind of log you would like to retrieve.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof LogsApi
     */
    public adminGetLogs(groupId: any, appId: any, coId?: any, errorsOnly?: any, userId?: any, startDate?: any, endDate?: any, skip?: any, limit?: any, type?: AdminGetLogsTypeEnum, options?: AxiosRequestConfig) {
        return LogsApiFp(this.configuration).adminGetLogs(groupId, appId, coId, errorsOnly, userId, startDate, endDate, skip, limit, type, options).then((request) => request(this.axios, this.basePath));
    }
}

/**
 * @export
 */
export const AdminGetLogsTypeEnum = {
    TriggerFailure: 'TRIGGER_FAILURE',
    DbTrigger: 'DB_TRIGGER',
    AuthTrigger: 'AUTH_TRIGGER',
    ScheduledTrigger: 'SCHEDULED_TRIGGER',
    Function: 'FUNCTION',
    ServiceFunction: 'SERVICE_FUNCTION',
    StreamFunction: 'STREAM_FUNCTION',
    ServiceStreamFunction: 'SERVICE_STREAM_FUNCTION',
    Auth: 'AUTH',
    Webhook: 'WEBHOOK',
    Endpoint: 'ENDPOINT',
    Push: 'PUSH',
    Api: 'API',
    ApiKey: 'API_KEY',
    Graphql: 'GRAPHQL',
    SyncConnectionStart: 'SYNC_CONNECTION_START',
    SyncConnectionEnd: 'SYNC_CONNECTION_END',
    SyncSessionStart: 'SYNC_SESSION_START',
    SyncSessionEnd: 'SYNC_SESSION_END',
    SyncClientWrite: 'SYNC_CLIENT_WRITE',
    SyncError: 'SYNC_ERROR',
    SyncOther: 'SYNC_OTHER',
    SchemaAdditiveChange: 'SCHEMA_ADDITIVE_CHANGE',
    SchemaGeneration: 'SCHEMA_GENERATION',
    SchemaValidation: 'SCHEMA_VALIDATION',
    LogForwarder: 'LOG_FORWARDER'
} as const;
export type AdminGetLogsTypeEnum = typeof AdminGetLogsTypeEnum[keyof typeof AdminGetLogsTypeEnum];


/**
 * MetricsApi - axios parameter creator
 * @export
 */
export const MetricsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Retrieves a variety of metrics, including: Compute Time, Data Transfer, Sync Minutes, Requests Succeeded, Requests Failed. For a complete list of available metrics, see [App Services Metrics Reference](https://mongodb.com/docs/atlas/app-services/reference/metrics).
         * @summary Retrieve App Services metrics
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} start The ISO-8601 date and time of the start of the query period (e.g. \&quot;2022-10-27T14:01:01Z\&quot;).
         * @param {any} end The ISO-8601 date and time of the end of the query period (e.g. \&quot;2022-12-27T14:01:01Z\&quot;).
         * @param {any} granularity Specifies the granularity of the query period as an [ISO-8601 duration value](https://en.wikipedia.org/wiki/ISO_8601#Durations). Examples include \&quot;P31D\&quot; (31 day), \&quot;PT1H\&quot; (1 hour), and \&quot;PT5M\&quot; (5 minutes).
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetMetrics: async (groupId: any, appId: any, start: any, end: any, granularity: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetMetrics', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetMetrics', 'appId', appId)
            // verify required parameter 'start' is not null or undefined
            assertParamExists('adminGetMetrics', 'start', start)
            // verify required parameter 'end' is not null or undefined
            assertParamExists('adminGetMetrics', 'end', end)
            // verify required parameter 'granularity' is not null or undefined
            assertParamExists('adminGetMetrics', 'granularity', granularity)
            const localVarPath = `/groups/{groupId}/apps/{appId}/metrics`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (start !== undefined) {
                localVarQueryParameter['start'] = start;
            }

            if (end !== undefined) {
                localVarQueryParameter['end'] = end;
            }

            if (granularity !== undefined) {
                localVarQueryParameter['granularity'] = granularity;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * MetricsApi - functional programming interface
 * @export
 */
export const MetricsApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = MetricsApiAxiosParamCreator(configuration)
    return {
        /**
         * Retrieves a variety of metrics, including: Compute Time, Data Transfer, Sync Minutes, Requests Succeeded, Requests Failed. For a complete list of available metrics, see [App Services Metrics Reference](https://mongodb.com/docs/atlas/app-services/reference/metrics).
         * @summary Retrieve App Services metrics
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} start The ISO-8601 date and time of the start of the query period (e.g. \&quot;2022-10-27T14:01:01Z\&quot;).
         * @param {any} end The ISO-8601 date and time of the end of the query period (e.g. \&quot;2022-12-27T14:01:01Z\&quot;).
         * @param {any} granularity Specifies the granularity of the query period as an [ISO-8601 duration value](https://en.wikipedia.org/wiki/ISO_8601#Durations). Examples include \&quot;P31D\&quot; (31 day), \&quot;PT1H\&quot; (1 hour), and \&quot;PT5M\&quot; (5 minutes).
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetMetrics(groupId: any, appId: any, start: any, end: any, granularity: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminGetMetrics200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetMetrics(groupId, appId, start, end, granularity, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * MetricsApi - factory interface
 * @export
 */
export const MetricsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = MetricsApiFp(configuration)
    return {
        /**
         * Retrieves a variety of metrics, including: Compute Time, Data Transfer, Sync Minutes, Requests Succeeded, Requests Failed. For a complete list of available metrics, see [App Services Metrics Reference](https://mongodb.com/docs/atlas/app-services/reference/metrics).
         * @summary Retrieve App Services metrics
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} start The ISO-8601 date and time of the start of the query period (e.g. \&quot;2022-10-27T14:01:01Z\&quot;).
         * @param {any} end The ISO-8601 date and time of the end of the query period (e.g. \&quot;2022-12-27T14:01:01Z\&quot;).
         * @param {any} granularity Specifies the granularity of the query period as an [ISO-8601 duration value](https://en.wikipedia.org/wiki/ISO_8601#Durations). Examples include \&quot;P31D\&quot; (31 day), \&quot;PT1H\&quot; (1 hour), and \&quot;PT5M\&quot; (5 minutes).
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetMetrics(groupId: any, appId: any, start: any, end: any, granularity: any, options?: any): AxiosPromise<AdminGetMetrics200Response> {
            return localVarFp.adminGetMetrics(groupId, appId, start, end, granularity, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * MetricsApi - interface
 * @export
 * @interface MetricsApi
 */
export interface MetricsApiInterface {
    /**
     * Retrieves a variety of metrics, including: Compute Time, Data Transfer, Sync Minutes, Requests Succeeded, Requests Failed. For a complete list of available metrics, see [App Services Metrics Reference](https://mongodb.com/docs/atlas/app-services/reference/metrics).
     * @summary Retrieve App Services metrics
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} start The ISO-8601 date and time of the start of the query period (e.g. \&quot;2022-10-27T14:01:01Z\&quot;).
     * @param {any} end The ISO-8601 date and time of the end of the query period (e.g. \&quot;2022-12-27T14:01:01Z\&quot;).
     * @param {any} granularity Specifies the granularity of the query period as an [ISO-8601 duration value](https://en.wikipedia.org/wiki/ISO_8601#Durations). Examples include \&quot;P31D\&quot; (31 day), \&quot;PT1H\&quot; (1 hour), and \&quot;PT5M\&quot; (5 minutes).
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MetricsApiInterface
     */
    adminGetMetrics(groupId: any, appId: any, start: any, end: any, granularity: any, options?: AxiosRequestConfig): AxiosPromise<AdminGetMetrics200Response>;

}

/**
 * MetricsApi - object-oriented interface
 * @export
 * @class MetricsApi
 * @extends {BaseAPI}
 */
export class MetricsApi extends BaseAPI implements MetricsApiInterface {
    /**
     * Retrieves a variety of metrics, including: Compute Time, Data Transfer, Sync Minutes, Requests Succeeded, Requests Failed. For a complete list of available metrics, see [App Services Metrics Reference](https://mongodb.com/docs/atlas/app-services/reference/metrics).
     * @summary Retrieve App Services metrics
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} start The ISO-8601 date and time of the start of the query period (e.g. \&quot;2022-10-27T14:01:01Z\&quot;).
     * @param {any} end The ISO-8601 date and time of the end of the query period (e.g. \&quot;2022-12-27T14:01:01Z\&quot;).
     * @param {any} granularity Specifies the granularity of the query period as an [ISO-8601 duration value](https://en.wikipedia.org/wiki/ISO_8601#Durations). Examples include \&quot;P31D\&quot; (31 day), \&quot;PT1H\&quot; (1 hour), and \&quot;PT5M\&quot; (5 minutes).
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MetricsApi
     */
    public adminGetMetrics(groupId: any, appId: any, start: any, end: any, granularity: any, options?: AxiosRequestConfig) {
        return MetricsApiFp(this.configuration).adminGetMetrics(groupId, appId, start, end, granularity, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * NotificationsApi - axios parameter creator
 * @export
 */
export const NotificationsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
         * @summary Create a push notification
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NewMessage} newMessage The notification to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateNotification: async (groupId: any, appId: any, newMessage: NewMessage, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateNotification', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateNotification', 'appId', appId)
            // verify required parameter 'newMessage' is not null or undefined
            assertParamExists('adminCreateNotification', 'newMessage', newMessage)
            const localVarPath = `/groups/{groupId}/apps/{appId}/push/notifications`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(newMessage, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
         * @summary Delete a push notification message
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteMessage: async (groupId: any, appId: any, messageId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteMessage', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteMessage', 'appId', appId)
            // verify required parameter 'messageId' is not null or undefined
            assertParamExists('adminDeleteMessage', 'messageId', messageId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/push/notifications/{messageId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"messageId"}}`, encodeURIComponent(String(messageId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Retrieve a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
         * @summary Retrieve a push notification message
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetMessage: async (groupId: any, appId: any, messageId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetMessage', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetMessage', 'appId', appId)
            // verify required parameter 'messageId' is not null or undefined
            assertParamExists('adminGetMessage', 'messageId', messageId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/push/notifications/{messageId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"messageId"}}`, encodeURIComponent(String(messageId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List [push notifications](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
         * @summary List push notifications
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {MessageState} [state] Only list notifications with the given state.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListNotifications: async (groupId: any, appId: any, state?: MessageState, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListNotifications', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListNotifications', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/push/notifications`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (state !== undefined) {
                localVarQueryParameter['state'] = state;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Send a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
         * @summary Send a push notification
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSendMessage: async (groupId: any, appId: any, messageId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminSendMessage', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminSendMessage', 'appId', appId)
            // verify required parameter 'messageId' is not null or undefined
            assertParamExists('adminSendMessage', 'messageId', messageId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/push/notifications/{messageId}/send`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"messageId"}}`, encodeURIComponent(String(messageId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Set a [push notification\'s](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) type.
         * @summary Set a push notification\'s type
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetMessageType: async (groupId: any, appId: any, messageId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminSetMessageType', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminSetMessageType', 'appId', appId)
            // verify required parameter 'messageId' is not null or undefined
            assertParamExists('adminSetMessageType', 'messageId', messageId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/push/notifications/{messageId}/type`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"messageId"}}`, encodeURIComponent(String(messageId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
         * @summary Update a push notification
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateMessage: async (groupId: any, appId: any, messageId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateMessage', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateMessage', 'appId', appId)
            // verify required parameter 'messageId' is not null or undefined
            assertParamExists('adminUpdateMessage', 'messageId', messageId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/push/notifications/{messageId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"messageId"}}`, encodeURIComponent(String(messageId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * NotificationsApi - functional programming interface
 * @export
 */
export const NotificationsApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = NotificationsApiAxiosParamCreator(configuration)
    return {
        /**
         * Create a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
         * @summary Create a push notification
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NewMessage} newMessage The notification to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateNotification(groupId: any, appId: any, newMessage: NewMessage, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateNotification(groupId, appId, newMessage, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
         * @summary Delete a push notification message
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteMessage(groupId, appId, messageId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Retrieve a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
         * @summary Retrieve a push notification message
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Message>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetMessage(groupId, appId, messageId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List [push notifications](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
         * @summary List push notifications
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {MessageState} [state] Only list notifications with the given state.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListNotifications(groupId: any, appId: any, state?: MessageState, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListNotifications(groupId, appId, state, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Send a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
         * @summary Send a push notification
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminSendMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminSendMessage(groupId, appId, messageId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Set a [push notification\'s](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) type.
         * @summary Set a push notification\'s type
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminSetMessageType(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminSetMessageType(groupId, appId, messageId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
         * @summary Update a push notification
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Message>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateMessage(groupId, appId, messageId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * NotificationsApi - factory interface
 * @export
 */
export const NotificationsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = NotificationsApiFp(configuration)
    return {
        /**
         * Create a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
         * @summary Create a push notification
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NewMessage} newMessage The notification to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateNotification(groupId: any, appId: any, newMessage: NewMessage, options?: any): AxiosPromise<void> {
            return localVarFp.adminCreateNotification(groupId, appId, newMessage, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
         * @summary Delete a push notification message
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteMessage(groupId: any, appId: any, messageId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteMessage(groupId, appId, messageId, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
         * @summary Retrieve a push notification message
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetMessage(groupId: any, appId: any, messageId: any, options?: any): AxiosPromise<Message> {
            return localVarFp.adminGetMessage(groupId, appId, messageId, options).then((request) => request(axios, basePath));
        },
        /**
         * List [push notifications](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
         * @summary List push notifications
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {MessageState} [state] Only list notifications with the given state.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListNotifications(groupId: any, appId: any, state?: MessageState, options?: any): AxiosPromise<any> {
            return localVarFp.adminListNotifications(groupId, appId, state, options).then((request) => request(axios, basePath));
        },
        /**
         * Send a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
         * @summary Send a push notification
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSendMessage(groupId: any, appId: any, messageId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminSendMessage(groupId, appId, messageId, options).then((request) => request(axios, basePath));
        },
        /**
         * Set a [push notification\'s](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) type.
         * @summary Set a push notification\'s type
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetMessageType(groupId: any, appId: any, messageId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminSetMessageType(groupId, appId, messageId, options).then((request) => request(axios, basePath));
        },
        /**
         * Update a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
         * @summary Update a push notification
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} messageId Message ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateMessage(groupId: any, appId: any, messageId: any, options?: any): AxiosPromise<Message> {
            return localVarFp.adminUpdateMessage(groupId, appId, messageId, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * NotificationsApi - interface
 * @export
 * @interface NotificationsApi
 */
export interface NotificationsApiInterface {
    /**
     * Create a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
     * @summary Create a push notification
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {NewMessage} newMessage The notification to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApiInterface
     */
    adminCreateNotification(groupId: any, appId: any, newMessage: NewMessage, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Delete a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
     * @summary Delete a push notification message
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} messageId Message ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApiInterface
     */
    adminDeleteMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Retrieve a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
     * @summary Retrieve a push notification message
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} messageId Message ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApiInterface
     */
    adminGetMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig): AxiosPromise<Message>;

    /**
     * List [push notifications](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
     * @summary List push notifications
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {MessageState} [state] Only list notifications with the given state.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApiInterface
     */
    adminListNotifications(groupId: any, appId: any, state?: MessageState, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Send a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
     * @summary Send a push notification
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} messageId Message ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApiInterface
     */
    adminSendMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Set a [push notification\'s](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) type.
     * @summary Set a push notification\'s type
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} messageId Message ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApiInterface
     */
    adminSetMessageType(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Update a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
     * @summary Update a push notification
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} messageId Message ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApiInterface
     */
    adminUpdateMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig): AxiosPromise<Message>;

}

/**
 * NotificationsApi - object-oriented interface
 * @export
 * @class NotificationsApi
 * @extends {BaseAPI}
 */
export class NotificationsApi extends BaseAPI implements NotificationsApiInterface {
    /**
     * Create a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
     * @summary Create a push notification
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {NewMessage} newMessage The notification to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApi
     */
    public adminCreateNotification(groupId: any, appId: any, newMessage: NewMessage, options?: AxiosRequestConfig) {
        return NotificationsApiFp(this.configuration).adminCreateNotification(groupId, appId, newMessage, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
     * @summary Delete a push notification message
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} messageId Message ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApi
     */
    public adminDeleteMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig) {
        return NotificationsApiFp(this.configuration).adminDeleteMessage(groupId, appId, messageId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Retrieve a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
     * @summary Retrieve a push notification message
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} messageId Message ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApi
     */
    public adminGetMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig) {
        return NotificationsApiFp(this.configuration).adminGetMessage(groupId, appId, messageId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List [push notifications](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
     * @summary List push notifications
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {MessageState} [state] Only list notifications with the given state.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApi
     */
    public adminListNotifications(groupId: any, appId: any, state?: MessageState, options?: AxiosRequestConfig) {
        return NotificationsApiFp(this.configuration).adminListNotifications(groupId, appId, state, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Send a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications).
     * @summary Send a push notification
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} messageId Message ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApi
     */
    public adminSendMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig) {
        return NotificationsApiFp(this.configuration).adminSendMessage(groupId, appId, messageId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Set a [push notification\'s](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) type.
     * @summary Set a push notification\'s type
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} messageId Message ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApi
     */
    public adminSetMessageType(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig) {
        return NotificationsApiFp(this.configuration).adminSetMessageType(groupId, appId, messageId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update a [push notification](https://www.mongodb.com/docs/realm/push-notifications#std-label-push-notifications) message.
     * @summary Update a push notification
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} messageId Message ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof NotificationsApi
     */
    public adminUpdateMessage(groupId: any, appId: any, messageId: any, options?: AxiosRequestConfig) {
        return NotificationsApiFp(this.configuration).adminUpdateMessage(groupId, appId, messageId, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * RulesApi - axios parameter creator
 * @export
 */
export const RulesApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) for a data source.
         * @summary Create default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {DefaultRule} defaultRule A default rule configuration object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateDefaultRule: async (groupId: any, appId: any, serviceId: any, defaultRule: DefaultRule, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateDefaultRule', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateDefaultRule', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminCreateDefaultRule', 'serviceId', serviceId)
            // verify required parameter 'defaultRule' is not null or undefined
            assertParamExists('adminCreateDefaultRule', 'defaultRule', defaultRule)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/default_rule`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(defaultRule, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Create a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Create a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} body The rule to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateRule: async (groupId: any, appId: any, serviceId: any, body: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateRule', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateRule', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminCreateRule', 'serviceId', serviceId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('adminCreateRule', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/rules`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete the [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) of a data source.
         * @summary Delete default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteDefaultRule: async (groupId: any, appId: any, serviceId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteDefaultRule', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteDefaultRule', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminDeleteDefaultRule', 'serviceId', serviceId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/default_rule`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Delete a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteRule: async (groupId: any, appId: any, serviceId: any, ruleId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteRule', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteRule', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminDeleteRule', 'serviceId', serviceId)
            // verify required parameter 'ruleId' is not null or undefined
            assertParamExists('adminDeleteRule', 'ruleId', ruleId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/rules/{ruleId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)))
                .replace(`{${"ruleId"}}`, encodeURIComponent(String(ruleId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get the current [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules).
         * @summary Get default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDefaultRule: async (groupId: any, appId: any, serviceId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetDefaultRule', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetDefaultRule', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminGetDefaultRule', 'serviceId', serviceId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/default_rule`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get a specific [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Get a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetRule: async (groupId: any, appId: any, serviceId: any, ruleId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetRule', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetRule', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminGetRule', 'serviceId', serviceId)
            // verify required parameter 'ruleId' is not null or undefined
            assertParamExists('adminGetRule', 'ruleId', ruleId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/rules/{ruleId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)))
                .replace(`{${"ruleId"}}`, encodeURIComponent(String(ruleId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List all [data access rules](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Get all rules
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListRules: async (groupId: any, appId: any, serviceId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListRules', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListRules', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminListRules', 'serviceId', serviceId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/rules`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Modify the [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) of a data source.
         * @summary Update default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} body The updated default rule configuration object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateDefaultRule: async (groupId: any, appId: any, serviceId: any, body: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateDefaultRule', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateDefaultRule', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminUpdateDefaultRule', 'serviceId', serviceId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('adminUpdateDefaultRule', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/default_rule`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Update a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
         * @param {any} body The new state of the rule.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateRule: async (groupId: any, appId: any, serviceId: any, ruleId: any, body: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateRule', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateRule', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminUpdateRule', 'serviceId', serviceId)
            // verify required parameter 'ruleId' is not null or undefined
            assertParamExists('adminUpdateRule', 'ruleId', ruleId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('adminUpdateRule', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/rules/{ruleId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)))
                .replace(`{${"ruleId"}}`, encodeURIComponent(String(ruleId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * RulesApi - functional programming interface
 * @export
 */
export const RulesApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = RulesApiAxiosParamCreator(configuration)
    return {
        /**
         * Create [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) for a data source.
         * @summary Create default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {DefaultRule} defaultRule A default rule configuration object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateDefaultRule(groupId: any, appId: any, serviceId: any, defaultRule: DefaultRule, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DefaultRule>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateDefaultRule(groupId, appId, serviceId, defaultRule, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Create a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Create a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} body The rule to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateRule(groupId: any, appId: any, serviceId: any, body: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminCreateRule201Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateRule(groupId, appId, serviceId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete the [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) of a data source.
         * @summary Delete default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteDefaultRule(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteDefaultRule(groupId, appId, serviceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Delete a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteRule(groupId: any, appId: any, serviceId: any, ruleId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteRule(groupId, appId, serviceId, ruleId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get the current [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules).
         * @summary Get default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetDefaultRule(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DefaultRule>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetDefaultRule(groupId, appId, serviceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get a specific [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Get a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetRule(groupId: any, appId: any, serviceId: any, ruleId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetRule(groupId, appId, serviceId, ruleId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List all [data access rules](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Get all rules
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListRules(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListRules(groupId, appId, serviceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Modify the [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) of a data source.
         * @summary Update default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} body The updated default rule configuration object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateDefaultRule(groupId: any, appId: any, serviceId: any, body: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateDefaultRule(groupId, appId, serviceId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Update a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
         * @param {any} body The new state of the rule.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateRule(groupId: any, appId: any, serviceId: any, ruleId: any, body: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateRule(groupId, appId, serviceId, ruleId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * RulesApi - factory interface
 * @export
 */
export const RulesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = RulesApiFp(configuration)
    return {
        /**
         * Create [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) for a data source.
         * @summary Create default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {DefaultRule} defaultRule A default rule configuration object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateDefaultRule(groupId: any, appId: any, serviceId: any, defaultRule: DefaultRule, options?: any): AxiosPromise<DefaultRule> {
            return localVarFp.adminCreateDefaultRule(groupId, appId, serviceId, defaultRule, options).then((request) => request(axios, basePath));
        },
        /**
         * Create a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Create a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} body The rule to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateRule(groupId: any, appId: any, serviceId: any, body: any, options?: any): AxiosPromise<AdminCreateRule201Response> {
            return localVarFp.adminCreateRule(groupId, appId, serviceId, body, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete the [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) of a data source.
         * @summary Delete default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteDefaultRule(groupId: any, appId: any, serviceId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteDefaultRule(groupId, appId, serviceId, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Delete a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteRule(groupId: any, appId: any, serviceId: any, ruleId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteRule(groupId, appId, serviceId, ruleId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get the current [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules).
         * @summary Get default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetDefaultRule(groupId: any, appId: any, serviceId: any, options?: any): AxiosPromise<DefaultRule> {
            return localVarFp.adminGetDefaultRule(groupId, appId, serviceId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get a specific [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Get a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetRule(groupId: any, appId: any, serviceId: any, ruleId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetRule(groupId, appId, serviceId, ruleId, options).then((request) => request(axios, basePath));
        },
        /**
         * List all [data access rules](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Get all rules
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListRules(groupId: any, appId: any, serviceId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListRules(groupId, appId, serviceId, options).then((request) => request(axios, basePath));
        },
        /**
         * Modify the [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) of a data source.
         * @summary Update default roles and filters
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} body The updated default rule configuration object.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateDefaultRule(groupId: any, appId: any, serviceId: any, body: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminUpdateDefaultRule(groupId, appId, serviceId, body, options).then((request) => request(axios, basePath));
        },
        /**
         * Update a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
         * @summary Update a rule
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
         * @param {any} body The new state of the rule.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateRule(groupId: any, appId: any, serviceId: any, ruleId: any, body: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminUpdateRule(groupId, appId, serviceId, ruleId, body, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * RulesApi - interface
 * @export
 * @interface RulesApi
 */
export interface RulesApiInterface {
    /**
     * Create [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) for a data source.
     * @summary Create default roles and filters
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {DefaultRule} defaultRule A default rule configuration object.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApiInterface
     */
    adminCreateDefaultRule(groupId: any, appId: any, serviceId: any, defaultRule: DefaultRule, options?: AxiosRequestConfig): AxiosPromise<DefaultRule>;

    /**
     * Create a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
     * @summary Create a rule
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} body The rule to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApiInterface
     */
    adminCreateRule(groupId: any, appId: any, serviceId: any, body: any, options?: AxiosRequestConfig): AxiosPromise<AdminCreateRule201Response>;

    /**
     * Delete the [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) of a data source.
     * @summary Delete default roles and filters
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApiInterface
     */
    adminDeleteDefaultRule(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Delete a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
     * @summary Delete a rule
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApiInterface
     */
    adminDeleteRule(groupId: any, appId: any, serviceId: any, ruleId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Get the current [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules).
     * @summary Get default roles and filters
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApiInterface
     */
    adminGetDefaultRule(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): AxiosPromise<DefaultRule>;

    /**
     * Get a specific [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
     * @summary Get a rule
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApiInterface
     */
    adminGetRule(groupId: any, appId: any, serviceId: any, ruleId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * List all [data access rules](https://www.mongodb.com/docs/atlas/app-services/rules).
     * @summary Get all rules
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApiInterface
     */
    adminListRules(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Modify the [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) of a data source.
     * @summary Update default roles and filters
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} body The updated default rule configuration object.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApiInterface
     */
    adminUpdateDefaultRule(groupId: any, appId: any, serviceId: any, body: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Update a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
     * @summary Update a rule
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
     * @param {any} body The new state of the rule.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApiInterface
     */
    adminUpdateRule(groupId: any, appId: any, serviceId: any, ruleId: any, body: any, options?: AxiosRequestConfig): AxiosPromise<void>;

}

/**
 * RulesApi - object-oriented interface
 * @export
 * @class RulesApi
 * @extends {BaseAPI}
 */
export class RulesApi extends BaseAPI implements RulesApiInterface {
    /**
     * Create [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) for a data source.
     * @summary Create default roles and filters
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {DefaultRule} defaultRule A default rule configuration object.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApi
     */
    public adminCreateDefaultRule(groupId: any, appId: any, serviceId: any, defaultRule: DefaultRule, options?: AxiosRequestConfig) {
        return RulesApiFp(this.configuration).adminCreateDefaultRule(groupId, appId, serviceId, defaultRule, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Create a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
     * @summary Create a rule
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} body The rule to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApi
     */
    public adminCreateRule(groupId: any, appId: any, serviceId: any, body: any, options?: AxiosRequestConfig) {
        return RulesApiFp(this.configuration).adminCreateRule(groupId, appId, serviceId, body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete the [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) of a data source.
     * @summary Delete default roles and filters
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApi
     */
    public adminDeleteDefaultRule(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig) {
        return RulesApiFp(this.configuration).adminDeleteDefaultRule(groupId, appId, serviceId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
     * @summary Delete a rule
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApi
     */
    public adminDeleteRule(groupId: any, appId: any, serviceId: any, ruleId: any, options?: AxiosRequestConfig) {
        return RulesApiFp(this.configuration).adminDeleteRule(groupId, appId, serviceId, ruleId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get the current [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules).
     * @summary Get default roles and filters
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApi
     */
    public adminGetDefaultRule(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig) {
        return RulesApiFp(this.configuration).adminGetDefaultRule(groupId, appId, serviceId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get a specific [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
     * @summary Get a rule
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApi
     */
    public adminGetRule(groupId: any, appId: any, serviceId: any, ruleId: any, options?: AxiosRequestConfig) {
        return RulesApiFp(this.configuration).adminGetRule(groupId, appId, serviceId, ruleId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List all [data access rules](https://www.mongodb.com/docs/atlas/app-services/rules).
     * @summary Get all rules
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApi
     */
    public adminListRules(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig) {
        return RulesApiFp(this.configuration).adminListRules(groupId, appId, serviceId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Modify the [default roles and filters](https://www.mongodb.com/docs/atlas/app-services/rules/#default-rules) of a data source.
     * @summary Update default roles and filters
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} body The updated default rule configuration object.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApi
     */
    public adminUpdateDefaultRule(groupId: any, appId: any, serviceId: any, body: any, options?: AxiosRequestConfig) {
        return RulesApiFp(this.configuration).adminUpdateDefaultRule(groupId, appId, serviceId, body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update a [data access rule](https://www.mongodb.com/docs/atlas/app-services/rules).
     * @summary Update a rule
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} ruleId The unique &#x60;_id&#x60; value of a rule.
     * @param {any} body The new state of the rule.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RulesApi
     */
    public adminUpdateRule(groupId: any, appId: any, serviceId: any, ruleId: any, body: any, options?: AxiosRequestConfig) {
        return RulesApiFp(this.configuration).adminUpdateRule(groupId, appId, serviceId, ruleId, body, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * SchemasApi - axios parameter creator
 * @export
 */
export const SchemasApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Define a new [schema](https://www.mongodb.com/docs/realm/schemas) for a linked collection.
         * @summary Create a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateSchemaRequest} adminCreateSchemaRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateSchema: async (groupId: any, appId: any, adminCreateSchemaRequest: AdminCreateSchemaRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateSchema', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateSchema', 'appId', appId)
            // verify required parameter 'adminCreateSchemaRequest' is not null or undefined
            assertParamExists('adminCreateSchema', 'adminCreateSchemaRequest', adminCreateSchemaRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/schemas`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminCreateSchemaRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a specific [schema](https://www.mongodb.com/docs/realm/schemas) by its `_id` value.
         * @summary Delete a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteSchema: async (groupId: any, appId: any, schemaId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteSchema', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteSchema', 'appId', appId)
            // verify required parameter 'schemaId' is not null or undefined
            assertParamExists('adminDeleteSchema', 'schemaId', schemaId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/schemas/{schemaId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"schemaId"}}`, encodeURIComponent(String(schemaId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Check if [null type schema validation](https://www.mongodb.com/docs/atlas/app-services/schemas/enforce-a-schema/#validate-null-types) is enabled.
         * @summary Get Null Type Schema Validation Setting
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetNullTypeSchemaValidationSetting: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetNullTypeSchemaValidationSetting', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetNullTypeSchemaValidationSetting', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/validation_settings/null_type_schema_validation`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get a specific [schema](https://www.mongodb.com/docs/realm/schemas) by its `_id` value.
         * @summary Get a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetSchema: async (groupId: any, appId: any, schemaId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetSchema', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetSchema', 'appId', appId)
            // verify required parameter 'schemaId' is not null or undefined
            assertParamExists('adminGetSchema', 'schemaId', schemaId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/schemas/{schemaId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"schemaId"}}`, encodeURIComponent(String(schemaId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List all defined [schemas](https://www.mongodb.com/docs/realm/schemas).
         * @summary List schemas
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListSchemas: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListSchemas', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListSchemas', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/schemas`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Enable or disable [null type schema validation](https://www.mongodb.com/docs/atlas/app-services/schemas/enforce-a-schema/#validate-null-types).
         * @summary Set Null Type Schema Validation Setting
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NullTypeSchemaValidationSetting} nullTypeSchemaValidationSetting 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetNullTypeSchemaValidationSetting: async (groupId: any, appId: any, nullTypeSchemaValidationSetting: NullTypeSchemaValidationSetting, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminSetNullTypeSchemaValidationSetting', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminSetNullTypeSchemaValidationSetting', 'appId', appId)
            // verify required parameter 'nullTypeSchemaValidationSetting' is not null or undefined
            assertParamExists('adminSetNullTypeSchemaValidationSetting', 'nullTypeSchemaValidationSetting', nullTypeSchemaValidationSetting)
            const localVarPath = `/groups/{groupId}/apps/{appId}/validation_settings/null_type_schema_validation`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(nullTypeSchemaValidationSetting, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Replace an existing [schema](https://www.mongodb.com/docs/realm/schemas) with a new one.
         * @summary Update a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
         * @param {AdminUpdateSchemaRequest} adminUpdateSchemaRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateSchema: async (groupId: any, appId: any, schemaId: any, adminUpdateSchemaRequest: AdminUpdateSchemaRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateSchema', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateSchema', 'appId', appId)
            // verify required parameter 'schemaId' is not null or undefined
            assertParamExists('adminUpdateSchema', 'schemaId', schemaId)
            // verify required parameter 'adminUpdateSchemaRequest' is not null or undefined
            assertParamExists('adminUpdateSchema', 'adminUpdateSchemaRequest', adminUpdateSchemaRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/schemas/{schemaId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"schemaId"}}`, encodeURIComponent(String(schemaId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminUpdateSchemaRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Query a subset of documents in a collection and validate each match against a schema.
         * @summary Sample & Validate Documents
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} datasourceId The unique &#x60;_id&#x60; value of a MongoDB data source.
         * @param {AdminValidateDocumentsRequest} adminValidateDocumentsRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminValidateDocuments: async (groupId: any, appId: any, datasourceId: any, adminValidateDocumentsRequest: AdminValidateDocumentsRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminValidateDocuments', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminValidateDocuments', 'appId', appId)
            // verify required parameter 'datasourceId' is not null or undefined
            assertParamExists('adminValidateDocuments', 'datasourceId', datasourceId)
            // verify required parameter 'adminValidateDocumentsRequest' is not null or undefined
            assertParamExists('adminValidateDocuments', 'adminValidateDocumentsRequest', adminValidateDocumentsRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{datasourceId}/commands/validate_documents`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"datasourceId"}}`, encodeURIComponent(String(datasourceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminValidateDocumentsRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * SchemasApi - functional programming interface
 * @export
 */
export const SchemasApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = SchemasApiAxiosParamCreator(configuration)
    return {
        /**
         * Define a new [schema](https://www.mongodb.com/docs/realm/schemas) for a linked collection.
         * @summary Create a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateSchemaRequest} adminCreateSchemaRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateSchema(groupId: any, appId: any, adminCreateSchemaRequest: AdminCreateSchemaRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminCreateSchema200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateSchema(groupId, appId, adminCreateSchemaRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete a specific [schema](https://www.mongodb.com/docs/realm/schemas) by its `_id` value.
         * @summary Delete a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteSchema(groupId: any, appId: any, schemaId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteSchema(groupId, appId, schemaId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Check if [null type schema validation](https://www.mongodb.com/docs/atlas/app-services/schemas/enforce-a-schema/#validate-null-types) is enabled.
         * @summary Get Null Type Schema Validation Setting
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetNullTypeSchemaValidationSetting(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<NullTypeSchemaValidationSetting>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetNullTypeSchemaValidationSetting(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get a specific [schema](https://www.mongodb.com/docs/realm/schemas) by its `_id` value.
         * @summary Get a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetSchema(groupId: any, appId: any, schemaId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminGetSchema200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetSchema(groupId, appId, schemaId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List all defined [schemas](https://www.mongodb.com/docs/realm/schemas).
         * @summary List schemas
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListSchemas(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListSchemas(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Enable or disable [null type schema validation](https://www.mongodb.com/docs/atlas/app-services/schemas/enforce-a-schema/#validate-null-types).
         * @summary Set Null Type Schema Validation Setting
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NullTypeSchemaValidationSetting} nullTypeSchemaValidationSetting 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminSetNullTypeSchemaValidationSetting(groupId: any, appId: any, nullTypeSchemaValidationSetting: NullTypeSchemaValidationSetting, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminSetNullTypeSchemaValidationSetting(groupId, appId, nullTypeSchemaValidationSetting, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Replace an existing [schema](https://www.mongodb.com/docs/realm/schemas) with a new one.
         * @summary Update a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
         * @param {AdminUpdateSchemaRequest} adminUpdateSchemaRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateSchema(groupId: any, appId: any, schemaId: any, adminUpdateSchemaRequest: AdminUpdateSchemaRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateSchema(groupId, appId, schemaId, adminUpdateSchemaRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Query a subset of documents in a collection and validate each match against a schema.
         * @summary Sample & Validate Documents
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} datasourceId The unique &#x60;_id&#x60; value of a MongoDB data source.
         * @param {AdminValidateDocumentsRequest} adminValidateDocumentsRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminValidateDocuments(groupId: any, appId: any, datasourceId: any, adminValidateDocumentsRequest: AdminValidateDocumentsRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminValidateDocuments200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminValidateDocuments(groupId, appId, datasourceId, adminValidateDocumentsRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * SchemasApi - factory interface
 * @export
 */
export const SchemasApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = SchemasApiFp(configuration)
    return {
        /**
         * Define a new [schema](https://www.mongodb.com/docs/realm/schemas) for a linked collection.
         * @summary Create a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateSchemaRequest} adminCreateSchemaRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateSchema(groupId: any, appId: any, adminCreateSchemaRequest: AdminCreateSchemaRequest, options?: any): AxiosPromise<AdminCreateSchema200Response> {
            return localVarFp.adminCreateSchema(groupId, appId, adminCreateSchemaRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a specific [schema](https://www.mongodb.com/docs/realm/schemas) by its `_id` value.
         * @summary Delete a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteSchema(groupId: any, appId: any, schemaId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteSchema(groupId, appId, schemaId, options).then((request) => request(axios, basePath));
        },
        /**
         * Check if [null type schema validation](https://www.mongodb.com/docs/atlas/app-services/schemas/enforce-a-schema/#validate-null-types) is enabled.
         * @summary Get Null Type Schema Validation Setting
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetNullTypeSchemaValidationSetting(groupId: any, appId: any, options?: any): AxiosPromise<NullTypeSchemaValidationSetting> {
            return localVarFp.adminGetNullTypeSchemaValidationSetting(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get a specific [schema](https://www.mongodb.com/docs/realm/schemas) by its `_id` value.
         * @summary Get a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetSchema(groupId: any, appId: any, schemaId: any, options?: any): AxiosPromise<AdminGetSchema200Response> {
            return localVarFp.adminGetSchema(groupId, appId, schemaId, options).then((request) => request(axios, basePath));
        },
        /**
         * List all defined [schemas](https://www.mongodb.com/docs/realm/schemas).
         * @summary List schemas
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListSchemas(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListSchemas(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Enable or disable [null type schema validation](https://www.mongodb.com/docs/atlas/app-services/schemas/enforce-a-schema/#validate-null-types).
         * @summary Set Null Type Schema Validation Setting
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NullTypeSchemaValidationSetting} nullTypeSchemaValidationSetting 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetNullTypeSchemaValidationSetting(groupId: any, appId: any, nullTypeSchemaValidationSetting: NullTypeSchemaValidationSetting, options?: any): AxiosPromise<void> {
            return localVarFp.adminSetNullTypeSchemaValidationSetting(groupId, appId, nullTypeSchemaValidationSetting, options).then((request) => request(axios, basePath));
        },
        /**
         * Replace an existing [schema](https://www.mongodb.com/docs/realm/schemas) with a new one.
         * @summary Update a schema
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
         * @param {AdminUpdateSchemaRequest} adminUpdateSchemaRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateSchema(groupId: any, appId: any, schemaId: any, adminUpdateSchemaRequest: AdminUpdateSchemaRequest, options?: any): AxiosPromise<void> {
            return localVarFp.adminUpdateSchema(groupId, appId, schemaId, adminUpdateSchemaRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Query a subset of documents in a collection and validate each match against a schema.
         * @summary Sample & Validate Documents
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} datasourceId The unique &#x60;_id&#x60; value of a MongoDB data source.
         * @param {AdminValidateDocumentsRequest} adminValidateDocumentsRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminValidateDocuments(groupId: any, appId: any, datasourceId: any, adminValidateDocumentsRequest: AdminValidateDocumentsRequest, options?: any): AxiosPromise<AdminValidateDocuments200Response> {
            return localVarFp.adminValidateDocuments(groupId, appId, datasourceId, adminValidateDocumentsRequest, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * SchemasApi - interface
 * @export
 * @interface SchemasApi
 */
export interface SchemasApiInterface {
    /**
     * Define a new [schema](https://www.mongodb.com/docs/realm/schemas) for a linked collection.
     * @summary Create a schema
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminCreateSchemaRequest} adminCreateSchemaRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApiInterface
     */
    adminCreateSchema(groupId: any, appId: any, adminCreateSchemaRequest: AdminCreateSchemaRequest, options?: AxiosRequestConfig): AxiosPromise<AdminCreateSchema200Response>;

    /**
     * Delete a specific [schema](https://www.mongodb.com/docs/realm/schemas) by its `_id` value.
     * @summary Delete a schema
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApiInterface
     */
    adminDeleteSchema(groupId: any, appId: any, schemaId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Check if [null type schema validation](https://www.mongodb.com/docs/atlas/app-services/schemas/enforce-a-schema/#validate-null-types) is enabled.
     * @summary Get Null Type Schema Validation Setting
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApiInterface
     */
    adminGetNullTypeSchemaValidationSetting(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<NullTypeSchemaValidationSetting>;

    /**
     * Get a specific [schema](https://www.mongodb.com/docs/realm/schemas) by its `_id` value.
     * @summary Get a schema
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApiInterface
     */
    adminGetSchema(groupId: any, appId: any, schemaId: any, options?: AxiosRequestConfig): AxiosPromise<AdminGetSchema200Response>;

    /**
     * List all defined [schemas](https://www.mongodb.com/docs/realm/schemas).
     * @summary List schemas
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApiInterface
     */
    adminListSchemas(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Enable or disable [null type schema validation](https://www.mongodb.com/docs/atlas/app-services/schemas/enforce-a-schema/#validate-null-types).
     * @summary Set Null Type Schema Validation Setting
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {NullTypeSchemaValidationSetting} nullTypeSchemaValidationSetting 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApiInterface
     */
    adminSetNullTypeSchemaValidationSetting(groupId: any, appId: any, nullTypeSchemaValidationSetting: NullTypeSchemaValidationSetting, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Replace an existing [schema](https://www.mongodb.com/docs/realm/schemas) with a new one.
     * @summary Update a schema
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
     * @param {AdminUpdateSchemaRequest} adminUpdateSchemaRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApiInterface
     */
    adminUpdateSchema(groupId: any, appId: any, schemaId: any, adminUpdateSchemaRequest: AdminUpdateSchemaRequest, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Query a subset of documents in a collection and validate each match against a schema.
     * @summary Sample & Validate Documents
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} datasourceId The unique &#x60;_id&#x60; value of a MongoDB data source.
     * @param {AdminValidateDocumentsRequest} adminValidateDocumentsRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApiInterface
     */
    adminValidateDocuments(groupId: any, appId: any, datasourceId: any, adminValidateDocumentsRequest: AdminValidateDocumentsRequest, options?: AxiosRequestConfig): AxiosPromise<AdminValidateDocuments200Response>;

}

/**
 * SchemasApi - object-oriented interface
 * @export
 * @class SchemasApi
 * @extends {BaseAPI}
 */
export class SchemasApi extends BaseAPI implements SchemasApiInterface {
    /**
     * Define a new [schema](https://www.mongodb.com/docs/realm/schemas) for a linked collection.
     * @summary Create a schema
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminCreateSchemaRequest} adminCreateSchemaRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApi
     */
    public adminCreateSchema(groupId: any, appId: any, adminCreateSchemaRequest: AdminCreateSchemaRequest, options?: AxiosRequestConfig) {
        return SchemasApiFp(this.configuration).adminCreateSchema(groupId, appId, adminCreateSchemaRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a specific [schema](https://www.mongodb.com/docs/realm/schemas) by its `_id` value.
     * @summary Delete a schema
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApi
     */
    public adminDeleteSchema(groupId: any, appId: any, schemaId: any, options?: AxiosRequestConfig) {
        return SchemasApiFp(this.configuration).adminDeleteSchema(groupId, appId, schemaId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Check if [null type schema validation](https://www.mongodb.com/docs/atlas/app-services/schemas/enforce-a-schema/#validate-null-types) is enabled.
     * @summary Get Null Type Schema Validation Setting
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApi
     */
    public adminGetNullTypeSchemaValidationSetting(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return SchemasApiFp(this.configuration).adminGetNullTypeSchemaValidationSetting(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get a specific [schema](https://www.mongodb.com/docs/realm/schemas) by its `_id` value.
     * @summary Get a schema
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApi
     */
    public adminGetSchema(groupId: any, appId: any, schemaId: any, options?: AxiosRequestConfig) {
        return SchemasApiFp(this.configuration).adminGetSchema(groupId, appId, schemaId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List all defined [schemas](https://www.mongodb.com/docs/realm/schemas).
     * @summary List schemas
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApi
     */
    public adminListSchemas(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return SchemasApiFp(this.configuration).adminListSchemas(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Enable or disable [null type schema validation](https://www.mongodb.com/docs/atlas/app-services/schemas/enforce-a-schema/#validate-null-types).
     * @summary Set Null Type Schema Validation Setting
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {NullTypeSchemaValidationSetting} nullTypeSchemaValidationSetting 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApi
     */
    public adminSetNullTypeSchemaValidationSetting(groupId: any, appId: any, nullTypeSchemaValidationSetting: NullTypeSchemaValidationSetting, options?: AxiosRequestConfig) {
        return SchemasApiFp(this.configuration).adminSetNullTypeSchemaValidationSetting(groupId, appId, nullTypeSchemaValidationSetting, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Replace an existing [schema](https://www.mongodb.com/docs/realm/schemas) with a new one.
     * @summary Update a schema
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} schemaId The unique &#x60;_id&#x60; value of a schema.
     * @param {AdminUpdateSchemaRequest} adminUpdateSchemaRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApi
     */
    public adminUpdateSchema(groupId: any, appId: any, schemaId: any, adminUpdateSchemaRequest: AdminUpdateSchemaRequest, options?: AxiosRequestConfig) {
        return SchemasApiFp(this.configuration).adminUpdateSchema(groupId, appId, schemaId, adminUpdateSchemaRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Query a subset of documents in a collection and validate each match against a schema.
     * @summary Sample & Validate Documents
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} datasourceId The unique &#x60;_id&#x60; value of a MongoDB data source.
     * @param {AdminValidateDocumentsRequest} adminValidateDocumentsRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SchemasApi
     */
    public adminValidateDocuments(groupId: any, appId: any, datasourceId: any, adminValidateDocumentsRequest: AdminValidateDocumentsRequest, options?: AxiosRequestConfig) {
        return SchemasApiFp(this.configuration).adminValidateDocuments(groupId, appId, datasourceId, adminValidateDocumentsRequest, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * SecretsApi - axios parameter creator
 * @export
 */
export const SecretsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create a new [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets).
         * @summary Create a new Secret
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateASecretRequest} adminCreateASecretRequest The Secret to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateASecret: async (groupId: any, appId: any, adminCreateASecretRequest: AdminCreateASecretRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateASecret', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateASecret', 'appId', appId)
            // verify required parameter 'adminCreateASecretRequest' is not null or undefined
            assertParamExists('adminCreateASecret', 'adminCreateASecretRequest', adminCreateASecretRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/secrets`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminCreateASecretRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets) associated with a Atlas App Services App.
         * @summary Delete a Secret
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} secretId The unique &#x60;_id&#x60; value of a secret.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteSecret: async (groupId: any, appId: any, secretId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteSecret', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteSecret', 'appId', appId)
            // verify required parameter 'secretId' is not null or undefined
            assertParamExists('adminDeleteSecret', 'secretId', secretId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/secrets/{secretId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"secretId"}}`, encodeURIComponent(String(secretId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List [secrets](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets#std-label-define-secret) associated with a Atlas App Services App.
         * @summary List secrets
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAllSecrets: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetAllSecrets', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetAllSecrets', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/secrets`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Modify a [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets) associated with a Atlas App Services App.
         * @summary Modify a Secret
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} secretId The unique &#x60;_id&#x60; value of a secret.
         * @param {AdminModifyASecretRequest} adminModifyASecretRequest The modified value of the Secret.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminModifyASecret: async (groupId: any, appId: any, secretId: any, adminModifyASecretRequest: AdminModifyASecretRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminModifyASecret', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminModifyASecret', 'appId', appId)
            // verify required parameter 'secretId' is not null or undefined
            assertParamExists('adminModifyASecret', 'secretId', secretId)
            // verify required parameter 'adminModifyASecretRequest' is not null or undefined
            assertParamExists('adminModifyASecret', 'adminModifyASecretRequest', adminModifyASecretRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/secrets/{secretId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"secretId"}}`, encodeURIComponent(String(secretId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminModifyASecretRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * SecretsApi - functional programming interface
 * @export
 */
export const SecretsApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = SecretsApiAxiosParamCreator(configuration)
    return {
        /**
         * Create a new [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets).
         * @summary Create a new Secret
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateASecretRequest} adminCreateASecretRequest The Secret to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateASecret(groupId: any, appId: any, adminCreateASecretRequest: AdminCreateASecretRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminCreateRule201Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateASecret(groupId, appId, adminCreateASecretRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete a [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets) associated with a Atlas App Services App.
         * @summary Delete a Secret
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} secretId The unique &#x60;_id&#x60; value of a secret.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteSecret(groupId: any, appId: any, secretId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteSecret(groupId, appId, secretId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List [secrets](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets#std-label-define-secret) associated with a Atlas App Services App.
         * @summary List secrets
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetAllSecrets(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetAllSecrets(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Modify a [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets) associated with a Atlas App Services App.
         * @summary Modify a Secret
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} secretId The unique &#x60;_id&#x60; value of a secret.
         * @param {AdminModifyASecretRequest} adminModifyASecretRequest The modified value of the Secret.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminModifyASecret(groupId: any, appId: any, secretId: any, adminModifyASecretRequest: AdminModifyASecretRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminModifyASecret(groupId, appId, secretId, adminModifyASecretRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * SecretsApi - factory interface
 * @export
 */
export const SecretsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = SecretsApiFp(configuration)
    return {
        /**
         * Create a new [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets).
         * @summary Create a new Secret
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateASecretRequest} adminCreateASecretRequest The Secret to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateASecret(groupId: any, appId: any, adminCreateASecretRequest: AdminCreateASecretRequest, options?: any): AxiosPromise<AdminCreateRule201Response> {
            return localVarFp.adminCreateASecret(groupId, appId, adminCreateASecretRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets) associated with a Atlas App Services App.
         * @summary Delete a Secret
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} secretId The unique &#x60;_id&#x60; value of a secret.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteSecret(groupId: any, appId: any, secretId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteSecret(groupId, appId, secretId, options).then((request) => request(axios, basePath));
        },
        /**
         * List [secrets](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets#std-label-define-secret) associated with a Atlas App Services App.
         * @summary List secrets
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetAllSecrets(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetAllSecrets(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Modify a [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets) associated with a Atlas App Services App.
         * @summary Modify a Secret
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} secretId The unique &#x60;_id&#x60; value of a secret.
         * @param {AdminModifyASecretRequest} adminModifyASecretRequest The modified value of the Secret.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminModifyASecret(groupId: any, appId: any, secretId: any, adminModifyASecretRequest: AdminModifyASecretRequest, options?: any): AxiosPromise<void> {
            return localVarFp.adminModifyASecret(groupId, appId, secretId, adminModifyASecretRequest, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * SecretsApi - interface
 * @export
 * @interface SecretsApi
 */
export interface SecretsApiInterface {
    /**
     * Create a new [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets).
     * @summary Create a new Secret
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminCreateASecretRequest} adminCreateASecretRequest The Secret to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecretsApiInterface
     */
    adminCreateASecret(groupId: any, appId: any, adminCreateASecretRequest: AdminCreateASecretRequest, options?: AxiosRequestConfig): AxiosPromise<AdminCreateRule201Response>;

    /**
     * Delete a [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets) associated with a Atlas App Services App.
     * @summary Delete a Secret
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} secretId The unique &#x60;_id&#x60; value of a secret.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecretsApiInterface
     */
    adminDeleteSecret(groupId: any, appId: any, secretId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * List [secrets](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets#std-label-define-secret) associated with a Atlas App Services App.
     * @summary List secrets
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecretsApiInterface
     */
    adminGetAllSecrets(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Modify a [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets) associated with a Atlas App Services App.
     * @summary Modify a Secret
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} secretId The unique &#x60;_id&#x60; value of a secret.
     * @param {AdminModifyASecretRequest} adminModifyASecretRequest The modified value of the Secret.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecretsApiInterface
     */
    adminModifyASecret(groupId: any, appId: any, secretId: any, adminModifyASecretRequest: AdminModifyASecretRequest, options?: AxiosRequestConfig): AxiosPromise<void>;

}

/**
 * SecretsApi - object-oriented interface
 * @export
 * @class SecretsApi
 * @extends {BaseAPI}
 */
export class SecretsApi extends BaseAPI implements SecretsApiInterface {
    /**
     * Create a new [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets).
     * @summary Create a new Secret
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminCreateASecretRequest} adminCreateASecretRequest The Secret to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecretsApi
     */
    public adminCreateASecret(groupId: any, appId: any, adminCreateASecretRequest: AdminCreateASecretRequest, options?: AxiosRequestConfig) {
        return SecretsApiFp(this.configuration).adminCreateASecret(groupId, appId, adminCreateASecretRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets) associated with a Atlas App Services App.
     * @summary Delete a Secret
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} secretId The unique &#x60;_id&#x60; value of a secret.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecretsApi
     */
    public adminDeleteSecret(groupId: any, appId: any, secretId: any, options?: AxiosRequestConfig) {
        return SecretsApiFp(this.configuration).adminDeleteSecret(groupId, appId, secretId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List [secrets](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets#std-label-define-secret) associated with a Atlas App Services App.
     * @summary List secrets
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecretsApi
     */
    public adminGetAllSecrets(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return SecretsApiFp(this.configuration).adminGetAllSecrets(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Modify a [Secret](https://www.mongodb.com/docs/realm/values-and-secrets/define-and-manage-secrets) associated with a Atlas App Services App.
     * @summary Modify a Secret
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} secretId The unique &#x60;_id&#x60; value of a secret.
     * @param {AdminModifyASecretRequest} adminModifyASecretRequest The modified value of the Secret.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecretsApi
     */
    public adminModifyASecret(groupId: any, appId: any, secretId: any, adminModifyASecretRequest: AdminModifyASecretRequest, options?: AxiosRequestConfig) {
        return SecretsApiFp(this.configuration).adminModifyASecret(groupId, appId, secretId, adminModifyASecretRequest, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * SecurityApi - axios parameter creator
 * @export
 */
export const SecurityApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Configure a new private endpoint for the App. 
         * @summary Create a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {PrivateEndpoint} privateEndpoint 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreatePrivateEndpoint: async (groupId: any, appId: any, privateEndpoint: PrivateEndpoint, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreatePrivateEndpoint', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreatePrivateEndpoint', 'appId', appId)
            // verify required parameter 'privateEndpoint' is not null or undefined
            assertParamExists('adminCreatePrivateEndpoint', 'privateEndpoint', privateEndpoint)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/private_endpoints`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(privateEndpoint, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a private endpoint. 
         * @summary Delete a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeletePrivateEndpoint: async (groupId: any, appId: any, privateEndpointId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeletePrivateEndpoint', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeletePrivateEndpoint', 'appId', appId)
            // verify required parameter 'privateEndpointId' is not null or undefined
            assertParamExists('adminDeletePrivateEndpoint', 'privateEndpointId', privateEndpointId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/private_endpoints/{privateEndpointId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"privateEndpointId"}}`, encodeURIComponent(String(privateEndpointId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get a specific private endpoint configuration. 
         * @summary Get a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetPrivateEndpoint: async (groupId: any, appId: any, privateEndpointId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetPrivateEndpoint', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetPrivateEndpoint', 'appId', appId)
            // verify required parameter 'privateEndpointId' is not null or undefined
            assertParamExists('adminGetPrivateEndpoint', 'privateEndpointId', privateEndpointId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/private_endpoints/{privateEndpointId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"privateEndpointId"}}`, encodeURIComponent(String(privateEndpointId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get a list of all private endpoints configured for the App. 
         * @summary List VPC Private Endpoints
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetPrivateEndpoints: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetPrivateEndpoints', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetPrivateEndpoints', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/private_endpoints`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get the current expiration time in seconds for user session refresh tokens.
         * @summary Get User Refresh Token Expiration Time
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetRefreshTokenExpiration: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetRefreshTokenExpiration', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetRefreshTokenExpiration', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/refresh_token_expiration`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List the allowed [HTTP origins](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin) from which App Services should allow requests.
         * @summary List allowed HTTP origins
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListAllowedRequestOrigins: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListAllowedRequestOrigins', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListAllowedRequestOrigins', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/allowed_request_origins`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get a list of all private endpoint services configured for the App. 
         * @summary List VPC Private Endpoint Services
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListPrivateEndpointServices: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListPrivateEndpointServices', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListPrivateEndpointServices', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/private_endpoint_service_infos`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Set the allowed [HTTP origins](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin) from which App Services should allow requests.
         * @summary Set allowed HTTP origins
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} body A list of HTTP origins.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetAllowedRequestOrigins: async (groupId: any, appId: any, body: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminSetAllowedRequestOrigins', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminSetAllowedRequestOrigins', 'appId', appId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('adminSetAllowedRequestOrigins', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/allowed_request_origins`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Set the expiration time in seconds for user session refresh tokens.
         * @summary Set User Refresh Token Expiration Time
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {RefreshTokenExpiration} refreshTokenExpiration 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetRefreshTokenExpiration: async (groupId: any, appId: any, refreshTokenExpiration: RefreshTokenExpiration, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminSetRefreshTokenExpiration', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminSetRefreshTokenExpiration', 'appId', appId)
            // verify required parameter 'refreshTokenExpiration' is not null or undefined
            assertParamExists('adminSetRefreshTokenExpiration', 'refreshTokenExpiration', refreshTokenExpiration)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/refresh_token_expiration`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(refreshTokenExpiration, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update the configuration of a private endpoint. 
         * @summary Modify a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
         * @param {PrivateEndpoint} privateEndpoint 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdatePrivateEndpoint: async (groupId: any, appId: any, privateEndpointId: any, privateEndpoint: PrivateEndpoint, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdatePrivateEndpoint', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdatePrivateEndpoint', 'appId', appId)
            // verify required parameter 'privateEndpointId' is not null or undefined
            assertParamExists('adminUpdatePrivateEndpoint', 'privateEndpointId', privateEndpointId)
            // verify required parameter 'privateEndpoint' is not null or undefined
            assertParamExists('adminUpdatePrivateEndpoint', 'privateEndpoint', privateEndpoint)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/private_endpoints/{privateEndpointId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"privateEndpointId"}}`, encodeURIComponent(String(privateEndpointId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(privateEndpoint, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Create an IP address or CIDR block in the Access List for your App Services app.
         * @summary Create an IP address or CIDR block in the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AllowedIPAccessListCreateRequest} allowedIPAccessListCreateRequest The IP Access List entry to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        allowedIPAccessListCreate: async (groupId: any, appId: any, allowedIPAccessListCreateRequest: AllowedIPAccessListCreateRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('allowedIPAccessListCreate', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('allowedIPAccessListCreate', 'appId', appId)
            // verify required parameter 'allowedIPAccessListCreateRequest' is not null or undefined
            assertParamExists('allowedIPAccessListCreate', 'allowedIPAccessListCreateRequest', allowedIPAccessListCreateRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/access_list`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(allowedIPAccessListCreateRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete an IP address or CIDR block from the Access List of your App Services app
         * @summary Delete an IP address or CIDR block from the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} ipId The IP address entry denoted by &#x60;ip_id&#x60; with the information given in the request body
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        allowedIPAccessListDelete: async (groupId: any, appId: any, ipId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('allowedIPAccessListDelete', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('allowedIPAccessListDelete', 'appId', appId)
            // verify required parameter 'ipId' is not null or undefined
            assertParamExists('allowedIPAccessListDelete', 'ipId', ipId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/access_list/{ipId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"ipId"}}`, encodeURIComponent(String(ipId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List the allowed entries in the Access List of your Atlas App Services App.
         * @summary List the allowed entries in the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        allowedIPAccessListGet: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('allowedIPAccessListGet', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('allowedIPAccessListGet', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/access_list`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Modify an IP address or CIDR block in the Access List of your App Services app
         * @summary Modify an IP address or CIDR block in the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} ipId The IP address entry denoted by &#x60;ip_id&#x60; with the information given in the request body
         * @param {AllowedIPAccessListUpdateRequest} allowedIPAccessListUpdateRequest The updated value of the IP Access List entry.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        allowedIPAccessListUpdate: async (groupId: any, appId: any, ipId: any, allowedIPAccessListUpdateRequest: AllowedIPAccessListUpdateRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('allowedIPAccessListUpdate', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('allowedIPAccessListUpdate', 'appId', appId)
            // verify required parameter 'ipId' is not null or undefined
            assertParamExists('allowedIPAccessListUpdate', 'ipId', ipId)
            // verify required parameter 'allowedIPAccessListUpdateRequest' is not null or undefined
            assertParamExists('allowedIPAccessListUpdate', 'allowedIPAccessListUpdateRequest', allowedIPAccessListUpdateRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/security/access_list/{ipId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"ipId"}}`, encodeURIComponent(String(ipId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(allowedIPAccessListUpdateRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * SecurityApi - functional programming interface
 * @export
 */
export const SecurityApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = SecurityApiAxiosParamCreator(configuration)
    return {
        /**
         * Configure a new private endpoint for the App. 
         * @summary Create a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {PrivateEndpoint} privateEndpoint 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreatePrivateEndpoint(groupId: any, appId: any, privateEndpoint: PrivateEndpoint, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreatePrivateEndpoint(groupId, appId, privateEndpoint, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete a private endpoint. 
         * @summary Delete a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeletePrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeletePrivateEndpoint(groupId, appId, privateEndpointId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get a specific private endpoint configuration. 
         * @summary Get a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetPrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PrivateEndpoint>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetPrivateEndpoint(groupId, appId, privateEndpointId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get a list of all private endpoints configured for the App. 
         * @summary List VPC Private Endpoints
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetPrivateEndpoints(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetPrivateEndpoints(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get the current expiration time in seconds for user session refresh tokens.
         * @summary Get User Refresh Token Expiration Time
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetRefreshTokenExpiration(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RefreshTokenExpiration>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetRefreshTokenExpiration(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List the allowed [HTTP origins](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin) from which App Services should allow requests.
         * @summary List allowed HTTP origins
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListAllowedRequestOrigins(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListAllowedRequestOrigins(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get a list of all private endpoint services configured for the App. 
         * @summary List VPC Private Endpoint Services
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListPrivateEndpointServices(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListPrivateEndpointServices(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Set the allowed [HTTP origins](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin) from which App Services should allow requests.
         * @summary Set allowed HTTP origins
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} body A list of HTTP origins.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminSetAllowedRequestOrigins(groupId: any, appId: any, body: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminSetAllowedRequestOrigins(groupId, appId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Set the expiration time in seconds for user session refresh tokens.
         * @summary Set User Refresh Token Expiration Time
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {RefreshTokenExpiration} refreshTokenExpiration 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminSetRefreshTokenExpiration(groupId: any, appId: any, refreshTokenExpiration: RefreshTokenExpiration, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminSetRefreshTokenExpiration(groupId, appId, refreshTokenExpiration, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update the configuration of a private endpoint. 
         * @summary Modify a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
         * @param {PrivateEndpoint} privateEndpoint 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdatePrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, privateEndpoint: PrivateEndpoint, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdatePrivateEndpoint(groupId, appId, privateEndpointId, privateEndpoint, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Create an IP address or CIDR block in the Access List for your App Services app.
         * @summary Create an IP address or CIDR block in the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AllowedIPAccessListCreateRequest} allowedIPAccessListCreateRequest The IP Access List entry to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async allowedIPAccessListCreate(groupId: any, appId: any, allowedIPAccessListCreateRequest: AllowedIPAccessListCreateRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AllowedIPAccessListCreate201Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.allowedIPAccessListCreate(groupId, appId, allowedIPAccessListCreateRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete an IP address or CIDR block from the Access List of your App Services app
         * @summary Delete an IP address or CIDR block from the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} ipId The IP address entry denoted by &#x60;ip_id&#x60; with the information given in the request body
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async allowedIPAccessListDelete(groupId: any, appId: any, ipId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.allowedIPAccessListDelete(groupId, appId, ipId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List the allowed entries in the Access List of your Atlas App Services App.
         * @summary List the allowed entries in the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async allowedIPAccessListGet(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.allowedIPAccessListGet(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Modify an IP address or CIDR block in the Access List of your App Services app
         * @summary Modify an IP address or CIDR block in the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} ipId The IP address entry denoted by &#x60;ip_id&#x60; with the information given in the request body
         * @param {AllowedIPAccessListUpdateRequest} allowedIPAccessListUpdateRequest The updated value of the IP Access List entry.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async allowedIPAccessListUpdate(groupId: any, appId: any, ipId: any, allowedIPAccessListUpdateRequest: AllowedIPAccessListUpdateRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AllowedIPAccessListCreate201Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.allowedIPAccessListUpdate(groupId, appId, ipId, allowedIPAccessListUpdateRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * SecurityApi - factory interface
 * @export
 */
export const SecurityApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = SecurityApiFp(configuration)
    return {
        /**
         * Configure a new private endpoint for the App. 
         * @summary Create a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {PrivateEndpoint} privateEndpoint 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreatePrivateEndpoint(groupId: any, appId: any, privateEndpoint: PrivateEndpoint, options?: any): AxiosPromise<void> {
            return localVarFp.adminCreatePrivateEndpoint(groupId, appId, privateEndpoint, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a private endpoint. 
         * @summary Delete a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeletePrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeletePrivateEndpoint(groupId, appId, privateEndpointId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get a specific private endpoint configuration. 
         * @summary Get a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetPrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, options?: any): AxiosPromise<PrivateEndpoint> {
            return localVarFp.adminGetPrivateEndpoint(groupId, appId, privateEndpointId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get a list of all private endpoints configured for the App. 
         * @summary List VPC Private Endpoints
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetPrivateEndpoints(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetPrivateEndpoints(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get the current expiration time in seconds for user session refresh tokens.
         * @summary Get User Refresh Token Expiration Time
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetRefreshTokenExpiration(groupId: any, appId: any, options?: any): AxiosPromise<RefreshTokenExpiration> {
            return localVarFp.adminGetRefreshTokenExpiration(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * List the allowed [HTTP origins](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin) from which App Services should allow requests.
         * @summary List allowed HTTP origins
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListAllowedRequestOrigins(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListAllowedRequestOrigins(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get a list of all private endpoint services configured for the App. 
         * @summary List VPC Private Endpoint Services
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListPrivateEndpointServices(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListPrivateEndpointServices(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Set the allowed [HTTP origins](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin) from which App Services should allow requests.
         * @summary Set allowed HTTP origins
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} body A list of HTTP origins.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetAllowedRequestOrigins(groupId: any, appId: any, body: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminSetAllowedRequestOrigins(groupId, appId, body, options).then((request) => request(axios, basePath));
        },
        /**
         * Set the expiration time in seconds for user session refresh tokens.
         * @summary Set User Refresh Token Expiration Time
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {RefreshTokenExpiration} refreshTokenExpiration 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminSetRefreshTokenExpiration(groupId: any, appId: any, refreshTokenExpiration: RefreshTokenExpiration, options?: any): AxiosPromise<void> {
            return localVarFp.adminSetRefreshTokenExpiration(groupId, appId, refreshTokenExpiration, options).then((request) => request(axios, basePath));
        },
        /**
         * Update the configuration of a private endpoint. 
         * @summary Modify a VPC Private Endpoint
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
         * @param {PrivateEndpoint} privateEndpoint 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdatePrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, privateEndpoint: PrivateEndpoint, options?: any): AxiosPromise<void> {
            return localVarFp.adminUpdatePrivateEndpoint(groupId, appId, privateEndpointId, privateEndpoint, options).then((request) => request(axios, basePath));
        },
        /**
         * Create an IP address or CIDR block in the Access List for your App Services app.
         * @summary Create an IP address or CIDR block in the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AllowedIPAccessListCreateRequest} allowedIPAccessListCreateRequest The IP Access List entry to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        allowedIPAccessListCreate(groupId: any, appId: any, allowedIPAccessListCreateRequest: AllowedIPAccessListCreateRequest, options?: any): AxiosPromise<AllowedIPAccessListCreate201Response> {
            return localVarFp.allowedIPAccessListCreate(groupId, appId, allowedIPAccessListCreateRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete an IP address or CIDR block from the Access List of your App Services app
         * @summary Delete an IP address or CIDR block from the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} ipId The IP address entry denoted by &#x60;ip_id&#x60; with the information given in the request body
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        allowedIPAccessListDelete(groupId: any, appId: any, ipId: any, options?: any): AxiosPromise<void> {
            return localVarFp.allowedIPAccessListDelete(groupId, appId, ipId, options).then((request) => request(axios, basePath));
        },
        /**
         * List the allowed entries in the Access List of your Atlas App Services App.
         * @summary List the allowed entries in the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        allowedIPAccessListGet(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.allowedIPAccessListGet(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Modify an IP address or CIDR block in the Access List of your App Services app
         * @summary Modify an IP address or CIDR block in the Access List
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} ipId The IP address entry denoted by &#x60;ip_id&#x60; with the information given in the request body
         * @param {AllowedIPAccessListUpdateRequest} allowedIPAccessListUpdateRequest The updated value of the IP Access List entry.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        allowedIPAccessListUpdate(groupId: any, appId: any, ipId: any, allowedIPAccessListUpdateRequest: AllowedIPAccessListUpdateRequest, options?: any): AxiosPromise<AllowedIPAccessListCreate201Response> {
            return localVarFp.allowedIPAccessListUpdate(groupId, appId, ipId, allowedIPAccessListUpdateRequest, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * SecurityApi - interface
 * @export
 * @interface SecurityApi
 */
export interface SecurityApiInterface {
    /**
     * Configure a new private endpoint for the App. 
     * @summary Create a VPC Private Endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {PrivateEndpoint} privateEndpoint 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    adminCreatePrivateEndpoint(groupId: any, appId: any, privateEndpoint: PrivateEndpoint, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Delete a private endpoint. 
     * @summary Delete a VPC Private Endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    adminDeletePrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Get a specific private endpoint configuration. 
     * @summary Get a VPC Private Endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    adminGetPrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, options?: AxiosRequestConfig): AxiosPromise<PrivateEndpoint>;

    /**
     * Get a list of all private endpoints configured for the App. 
     * @summary List VPC Private Endpoints
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    adminGetPrivateEndpoints(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Get the current expiration time in seconds for user session refresh tokens.
     * @summary Get User Refresh Token Expiration Time
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    adminGetRefreshTokenExpiration(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<RefreshTokenExpiration>;

    /**
     * List the allowed [HTTP origins](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin) from which App Services should allow requests.
     * @summary List allowed HTTP origins
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    adminListAllowedRequestOrigins(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Get a list of all private endpoint services configured for the App. 
     * @summary List VPC Private Endpoint Services
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    adminListPrivateEndpointServices(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Set the allowed [HTTP origins](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin) from which App Services should allow requests.
     * @summary Set allowed HTTP origins
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} body A list of HTTP origins.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    adminSetAllowedRequestOrigins(groupId: any, appId: any, body: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Set the expiration time in seconds for user session refresh tokens.
     * @summary Set User Refresh Token Expiration Time
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {RefreshTokenExpiration} refreshTokenExpiration 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    adminSetRefreshTokenExpiration(groupId: any, appId: any, refreshTokenExpiration: RefreshTokenExpiration, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Update the configuration of a private endpoint. 
     * @summary Modify a VPC Private Endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
     * @param {PrivateEndpoint} privateEndpoint 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    adminUpdatePrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, privateEndpoint: PrivateEndpoint, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Create an IP address or CIDR block in the Access List for your App Services app.
     * @summary Create an IP address or CIDR block in the Access List
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AllowedIPAccessListCreateRequest} allowedIPAccessListCreateRequest The IP Access List entry to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    allowedIPAccessListCreate(groupId: any, appId: any, allowedIPAccessListCreateRequest: AllowedIPAccessListCreateRequest, options?: AxiosRequestConfig): AxiosPromise<AllowedIPAccessListCreate201Response>;

    /**
     * Delete an IP address or CIDR block from the Access List of your App Services app
     * @summary Delete an IP address or CIDR block from the Access List
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} ipId The IP address entry denoted by &#x60;ip_id&#x60; with the information given in the request body
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    allowedIPAccessListDelete(groupId: any, appId: any, ipId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * List the allowed entries in the Access List of your Atlas App Services App.
     * @summary List the allowed entries in the Access List
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    allowedIPAccessListGet(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Modify an IP address or CIDR block in the Access List of your App Services app
     * @summary Modify an IP address or CIDR block in the Access List
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} ipId The IP address entry denoted by &#x60;ip_id&#x60; with the information given in the request body
     * @param {AllowedIPAccessListUpdateRequest} allowedIPAccessListUpdateRequest The updated value of the IP Access List entry.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApiInterface
     */
    allowedIPAccessListUpdate(groupId: any, appId: any, ipId: any, allowedIPAccessListUpdateRequest: AllowedIPAccessListUpdateRequest, options?: AxiosRequestConfig): AxiosPromise<AllowedIPAccessListCreate201Response>;

}

/**
 * SecurityApi - object-oriented interface
 * @export
 * @class SecurityApi
 * @extends {BaseAPI}
 */
export class SecurityApi extends BaseAPI implements SecurityApiInterface {
    /**
     * Configure a new private endpoint for the App. 
     * @summary Create a VPC Private Endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {PrivateEndpoint} privateEndpoint 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public adminCreatePrivateEndpoint(groupId: any, appId: any, privateEndpoint: PrivateEndpoint, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).adminCreatePrivateEndpoint(groupId, appId, privateEndpoint, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a private endpoint. 
     * @summary Delete a VPC Private Endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public adminDeletePrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).adminDeletePrivateEndpoint(groupId, appId, privateEndpointId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get a specific private endpoint configuration. 
     * @summary Get a VPC Private Endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public adminGetPrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).adminGetPrivateEndpoint(groupId, appId, privateEndpointId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get a list of all private endpoints configured for the App. 
     * @summary List VPC Private Endpoints
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public adminGetPrivateEndpoints(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).adminGetPrivateEndpoints(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get the current expiration time in seconds for user session refresh tokens.
     * @summary Get User Refresh Token Expiration Time
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public adminGetRefreshTokenExpiration(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).adminGetRefreshTokenExpiration(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List the allowed [HTTP origins](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin) from which App Services should allow requests.
     * @summary List allowed HTTP origins
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public adminListAllowedRequestOrigins(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).adminListAllowedRequestOrigins(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get a list of all private endpoint services configured for the App. 
     * @summary List VPC Private Endpoint Services
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public adminListPrivateEndpointServices(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).adminListPrivateEndpointServices(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Set the allowed [HTTP origins](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin) from which App Services should allow requests.
     * @summary Set allowed HTTP origins
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} body A list of HTTP origins.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public adminSetAllowedRequestOrigins(groupId: any, appId: any, body: any, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).adminSetAllowedRequestOrigins(groupId, appId, body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Set the expiration time in seconds for user session refresh tokens.
     * @summary Set User Refresh Token Expiration Time
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {RefreshTokenExpiration} refreshTokenExpiration 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public adminSetRefreshTokenExpiration(groupId: any, appId: any, refreshTokenExpiration: RefreshTokenExpiration, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).adminSetRefreshTokenExpiration(groupId, appId, refreshTokenExpiration, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update the configuration of a private endpoint. 
     * @summary Modify a VPC Private Endpoint
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} privateEndpointId The _id ObjectID of a VPC private endpoint.
     * @param {PrivateEndpoint} privateEndpoint 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public adminUpdatePrivateEndpoint(groupId: any, appId: any, privateEndpointId: any, privateEndpoint: PrivateEndpoint, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).adminUpdatePrivateEndpoint(groupId, appId, privateEndpointId, privateEndpoint, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Create an IP address or CIDR block in the Access List for your App Services app.
     * @summary Create an IP address or CIDR block in the Access List
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AllowedIPAccessListCreateRequest} allowedIPAccessListCreateRequest The IP Access List entry to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public allowedIPAccessListCreate(groupId: any, appId: any, allowedIPAccessListCreateRequest: AllowedIPAccessListCreateRequest, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).allowedIPAccessListCreate(groupId, appId, allowedIPAccessListCreateRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete an IP address or CIDR block from the Access List of your App Services app
     * @summary Delete an IP address or CIDR block from the Access List
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} ipId The IP address entry denoted by &#x60;ip_id&#x60; with the information given in the request body
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public allowedIPAccessListDelete(groupId: any, appId: any, ipId: any, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).allowedIPAccessListDelete(groupId, appId, ipId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List the allowed entries in the Access List of your Atlas App Services App.
     * @summary List the allowed entries in the Access List
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public allowedIPAccessListGet(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).allowedIPAccessListGet(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Modify an IP address or CIDR block in the Access List of your App Services app
     * @summary Modify an IP address or CIDR block in the Access List
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} ipId The IP address entry denoted by &#x60;ip_id&#x60; with the information given in the request body
     * @param {AllowedIPAccessListUpdateRequest} allowedIPAccessListUpdateRequest The updated value of the IP Access List entry.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SecurityApi
     */
    public allowedIPAccessListUpdate(groupId: any, appId: any, ipId: any, allowedIPAccessListUpdateRequest: AllowedIPAccessListUpdateRequest, options?: AxiosRequestConfig) {
        return SecurityApiFp(this.configuration).allowedIPAccessListUpdate(groupId, appId, ipId, allowedIPAccessListUpdateRequest, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * ServicesApi - axios parameter creator
 * @export
 */
export const ServicesApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary Create a data source or third-party service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [body] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateService: async (groupId: any, appId: any, body?: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateService', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateService', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary Delete a data source or third-party service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteService: async (groupId: any, appId: any, serviceId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteService', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteService', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminDeleteService', 'serviceId', serviceId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Sample a subset of documents in a collection to generate a JSON schema.
         * @summary Generate a JSON schema from sample
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {AdminGenerateSchemaRequest} adminGenerateSchemaRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGenerateSchema: async (groupId: any, appId: any, serviceId: any, adminGenerateSchemaRequest: AdminGenerateSchemaRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGenerateSchema', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGenerateSchema', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminGenerateSchema', 'serviceId', serviceId)
            // verify required parameter 'adminGenerateSchemaRequest' is not null or undefined
            assertParamExists('adminGenerateSchema', 'adminGenerateSchemaRequest', adminGenerateSchemaRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/commands/generate_schema`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminGenerateSchemaRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary Get a data source or third-party service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetService: async (groupId: any, appId: any, serviceId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetService', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetService', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminGetService', 'serviceId', serviceId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Retrieve a [service\'s](https://www.mongodb.com/docs/realm/services#std-label-services) configuration.
         * @summary Retrieve a service\'s configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetServiceConfig: async (groupId: any, appId: any, serviceId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetServiceConfig', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetServiceConfig', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminGetServiceConfig', 'serviceId', serviceId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List all [data sources](https://www.mongodb.com/docs/atlas/app-services/mongodb/) and [third-party services [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary List all data sources and third-party services
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListServices: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListServices', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListServices', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Run a command associated with a [service](https://www.mongodb.com/docs/realm/services#std-label-services).
         * @summary Run a command associated with a service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} commandName Command name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminRunCommand: async (groupId: any, appId: any, serviceId: any, commandName: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminRunCommand', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminRunCommand', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminRunCommand', 'serviceId', serviceId)
            // verify required parameter 'commandName' is not null or undefined
            assertParamExists('adminRunCommand', 'commandName', commandName)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/commands/{commandName}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)))
                .replace(`{${"commandName"}}`, encodeURIComponent(String(commandName)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update a [service](https://www.mongodb.com/docs/realm/services#std-label-services).
         * @summary Update a service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateService: async (groupId: any, appId: any, serviceId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateService', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateService', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminUpdateService', 'serviceId', serviceId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update a [service\'s](https://www.mongodb.com/docs/realm/services#std-label-services) configuration.
         * @summary Update a service\'s configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateServiceConfig: async (groupId: any, appId: any, serviceId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateServiceConfig', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateServiceConfig', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminUpdateServiceConfig', 'serviceId', serviceId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary Get information about the underlying Atlas mongod
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getBuildInfo: async (groupId: any, appId: any, serviceId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('getBuildInfo', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('getBuildInfo', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('getBuildInfo', 'serviceId', serviceId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/commands/build_info`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ServicesApi - functional programming interface
 * @export
 */
export const ServicesApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = ServicesApiAxiosParamCreator(configuration)
    return {
        /**
         * Create a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary Create a data source or third-party service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [body] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateService(groupId: any, appId: any, body?: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateService(groupId, appId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary Delete a data source or third-party service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteService(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteService(groupId, appId, serviceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Sample a subset of documents in a collection to generate a JSON schema.
         * @summary Generate a JSON schema from sample
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {AdminGenerateSchemaRequest} adminGenerateSchemaRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGenerateSchema(groupId: any, appId: any, serviceId: any, adminGenerateSchemaRequest: AdminGenerateSchemaRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminGenerateSchema200Response>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGenerateSchema(groupId, appId, serviceId, adminGenerateSchemaRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary Get a data source or third-party service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetService(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetService(groupId, appId, serviceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Retrieve a [service\'s](https://www.mongodb.com/docs/realm/services#std-label-services) configuration.
         * @summary Retrieve a service\'s configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetServiceConfig(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetServiceConfig(groupId, appId, serviceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List all [data sources](https://www.mongodb.com/docs/atlas/app-services/mongodb/) and [third-party services [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary List all data sources and third-party services
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListServices(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListServices(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Run a command associated with a [service](https://www.mongodb.com/docs/realm/services#std-label-services).
         * @summary Run a command associated with a service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} commandName Command name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminRunCommand(groupId: any, appId: any, serviceId: any, commandName: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminRunCommand(groupId, appId, serviceId, commandName, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update a [service](https://www.mongodb.com/docs/realm/services#std-label-services).
         * @summary Update a service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateService(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateService(groupId, appId, serviceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update a [service\'s](https://www.mongodb.com/docs/realm/services#std-label-services) configuration.
         * @summary Update a service\'s configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateServiceConfig(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateServiceConfig(groupId, appId, serviceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary Get information about the underlying Atlas mongod
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async getBuildInfo(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BuildInfo>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.getBuildInfo(groupId, appId, serviceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * ServicesApi - factory interface
 * @export
 */
export const ServicesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = ServicesApiFp(configuration)
    return {
        /**
         * Create a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary Create a data source or third-party service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [body] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateService(groupId: any, appId: any, body?: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminCreateService(groupId, appId, body, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary Delete a data source or third-party service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteService(groupId: any, appId: any, serviceId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteService(groupId, appId, serviceId, options).then((request) => request(axios, basePath));
        },
        /**
         * Sample a subset of documents in a collection to generate a JSON schema.
         * @summary Generate a JSON schema from sample
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {AdminGenerateSchemaRequest} adminGenerateSchemaRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGenerateSchema(groupId: any, appId: any, serviceId: any, adminGenerateSchemaRequest: AdminGenerateSchemaRequest, options?: any): AxiosPromise<AdminGenerateSchema200Response> {
            return localVarFp.adminGenerateSchema(groupId, appId, serviceId, adminGenerateSchemaRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Get a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary Get a data source or third-party service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetService(groupId: any, appId: any, serviceId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetService(groupId, appId, serviceId, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve a [service\'s](https://www.mongodb.com/docs/realm/services#std-label-services) configuration.
         * @summary Retrieve a service\'s configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetServiceConfig(groupId: any, appId: any, serviceId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminGetServiceConfig(groupId, appId, serviceId, options).then((request) => request(axios, basePath));
        },
        /**
         * List all [data sources](https://www.mongodb.com/docs/atlas/app-services/mongodb/) and [third-party services [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
         * @summary List all data sources and third-party services
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListServices(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListServices(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Run a command associated with a [service](https://www.mongodb.com/docs/realm/services#std-label-services).
         * @summary Run a command associated with a service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} commandName Command name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminRunCommand(groupId: any, appId: any, serviceId: any, commandName: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminRunCommand(groupId, appId, serviceId, commandName, options).then((request) => request(axios, basePath));
        },
        /**
         * Update a [service](https://www.mongodb.com/docs/realm/services#std-label-services).
         * @summary Update a service
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateService(groupId: any, appId: any, serviceId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminUpdateService(groupId, appId, serviceId, options).then((request) => request(axios, basePath));
        },
        /**
         * Update a [service\'s](https://www.mongodb.com/docs/realm/services#std-label-services) configuration.
         * @summary Update a service\'s configuration
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateServiceConfig(groupId: any, appId: any, serviceId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminUpdateServiceConfig(groupId, appId, serviceId, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary Get information about the underlying Atlas mongod
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getBuildInfo(groupId: any, appId: any, serviceId: any, options?: any): AxiosPromise<BuildInfo> {
            return localVarFp.getBuildInfo(groupId, appId, serviceId, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * ServicesApi - interface
 * @export
 * @interface ServicesApi
 */
export interface ServicesApiInterface {
    /**
     * Create a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
     * @summary Create a data source or third-party service
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [body] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApiInterface
     */
    adminCreateService(groupId: any, appId: any, body?: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Delete a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
     * @summary Delete a data source or third-party service
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApiInterface
     */
    adminDeleteService(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Sample a subset of documents in a collection to generate a JSON schema.
     * @summary Generate a JSON schema from sample
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {AdminGenerateSchemaRequest} adminGenerateSchemaRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApiInterface
     */
    adminGenerateSchema(groupId: any, appId: any, serviceId: any, adminGenerateSchemaRequest: AdminGenerateSchemaRequest, options?: AxiosRequestConfig): AxiosPromise<AdminGenerateSchema200Response>;

    /**
     * Get a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
     * @summary Get a data source or third-party service
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApiInterface
     */
    adminGetService(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Retrieve a [service\'s](https://www.mongodb.com/docs/realm/services#std-label-services) configuration.
     * @summary Retrieve a service\'s configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApiInterface
     */
    adminGetServiceConfig(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * List all [data sources](https://www.mongodb.com/docs/atlas/app-services/mongodb/) and [third-party services [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
     * @summary List all data sources and third-party services
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApiInterface
     */
    adminListServices(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Run a command associated with a [service](https://www.mongodb.com/docs/realm/services#std-label-services).
     * @summary Run a command associated with a service
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} commandName Command name
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApiInterface
     */
    adminRunCommand(groupId: any, appId: any, serviceId: any, commandName: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Update a [service](https://www.mongodb.com/docs/realm/services#std-label-services).
     * @summary Update a service
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApiInterface
     */
    adminUpdateService(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Update a [service\'s](https://www.mongodb.com/docs/realm/services#std-label-services) configuration.
     * @summary Update a service\'s configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApiInterface
     */
    adminUpdateServiceConfig(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * 
     * @summary Get information about the underlying Atlas mongod
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApiInterface
     */
    getBuildInfo(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): AxiosPromise<BuildInfo>;

}

/**
 * ServicesApi - object-oriented interface
 * @export
 * @class ServicesApi
 * @extends {BaseAPI}
 */
export class ServicesApi extends BaseAPI implements ServicesApiInterface {
    /**
     * Create a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
     * @summary Create a data source or third-party service
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [body] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApi
     */
    public adminCreateService(groupId: any, appId: any, body?: any, options?: AxiosRequestConfig) {
        return ServicesApiFp(this.configuration).adminCreateService(groupId, appId, body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
     * @summary Delete a data source or third-party service
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApi
     */
    public adminDeleteService(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig) {
        return ServicesApiFp(this.configuration).adminDeleteService(groupId, appId, serviceId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Sample a subset of documents in a collection to generate a JSON schema.
     * @summary Generate a JSON schema from sample
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {AdminGenerateSchemaRequest} adminGenerateSchemaRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApi
     */
    public adminGenerateSchema(groupId: any, appId: any, serviceId: any, adminGenerateSchemaRequest: AdminGenerateSchemaRequest, options?: AxiosRequestConfig) {
        return ServicesApiFp(this.configuration).adminGenerateSchema(groupId, appId, serviceId, adminGenerateSchemaRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get a [data source](https://www.mongodb.com/docs/atlas/app-services/mongodb/) or [third-party service [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
     * @summary Get a data source or third-party service
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApi
     */
    public adminGetService(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig) {
        return ServicesApiFp(this.configuration).adminGetService(groupId, appId, serviceId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Retrieve a [service\'s](https://www.mongodb.com/docs/realm/services#std-label-services) configuration.
     * @summary Retrieve a service\'s configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApi
     */
    public adminGetServiceConfig(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig) {
        return ServicesApiFp(this.configuration).adminGetServiceConfig(groupId, appId, serviceId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List all [data sources](https://www.mongodb.com/docs/atlas/app-services/mongodb/) and [third-party services [Deprecated]](https://www.mongodb.com/docs/atlas/app-services/reference/services/).
     * @summary List all data sources and third-party services
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApi
     */
    public adminListServices(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return ServicesApiFp(this.configuration).adminListServices(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Run a command associated with a [service](https://www.mongodb.com/docs/realm/services#std-label-services).
     * @summary Run a command associated with a service
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} commandName Command name
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApi
     */
    public adminRunCommand(groupId: any, appId: any, serviceId: any, commandName: any, options?: AxiosRequestConfig) {
        return ServicesApiFp(this.configuration).adminRunCommand(groupId, appId, serviceId, commandName, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update a [service](https://www.mongodb.com/docs/realm/services#std-label-services).
     * @summary Update a service
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApi
     */
    public adminUpdateService(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig) {
        return ServicesApiFp(this.configuration).adminUpdateService(groupId, appId, serviceId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update a [service\'s](https://www.mongodb.com/docs/realm/services#std-label-services) configuration.
     * @summary Update a service\'s configuration
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApi
     */
    public adminUpdateServiceConfig(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig) {
        return ServicesApiFp(this.configuration).adminUpdateServiceConfig(groupId, appId, serviceId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary Get information about the underlying Atlas mongod
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ServicesApi
     */
    public getBuildInfo(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig) {
        return ServicesApiFp(this.configuration).getBuildInfo(groupId, appId, serviceId, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * SyncApi - axios parameter creator
 * @export
 */
export const SyncApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Retrieve sync data for a specific Atlas App Services App when using  [Flexible Sync](https://www.mongodb.com/docs/atlas/app-services/sync/get-started/).
         * @summary Get Flexible Sync information
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetFlexSync: async (groupId: any, appId: any, serviceId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetFlexSync', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetFlexSync', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminGetFlexSync', 'serviceId', serviceId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/service/{serviceId}/config`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Retrieve partition field data when using  [Partition-Based Sync](https://www.mongodb.com/docs/realm/reference/partition-based-sync/).
         * @summary Get Partition-Based Sync information
         * @param {any} serviceId The Service ID for the linked cluster.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetSync: async (serviceId: any, groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminGetSync', 'serviceId', serviceId)
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetSync', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetSync', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/sync/data`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (serviceId !== undefined) {
                localVarQueryParameter['service_id'] = serviceId;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * SyncApi - functional programming interface
 * @export
 */
export const SyncApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = SyncApiAxiosParamCreator(configuration)
    return {
        /**
         * Retrieve sync data for a specific Atlas App Services App when using  [Flexible Sync](https://www.mongodb.com/docs/atlas/app-services/sync/get-started/).
         * @summary Get Flexible Sync information
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetFlexSync(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SyncDataResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetFlexSync(groupId, appId, serviceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Retrieve partition field data when using  [Partition-Based Sync](https://www.mongodb.com/docs/realm/reference/partition-based-sync/).
         * @summary Get Partition-Based Sync information
         * @param {any} serviceId The Service ID for the linked cluster.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetSync(serviceId: any, groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PbsSyncResponse>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetSync(serviceId, groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * SyncApi - factory interface
 * @export
 */
export const SyncApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = SyncApiFp(configuration)
    return {
        /**
         * Retrieve sync data for a specific Atlas App Services App when using  [Flexible Sync](https://www.mongodb.com/docs/atlas/app-services/sync/get-started/).
         * @summary Get Flexible Sync information
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetFlexSync(groupId: any, appId: any, serviceId: any, options?: any): AxiosPromise<SyncDataResponse> {
            return localVarFp.adminGetFlexSync(groupId, appId, serviceId, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve partition field data when using  [Partition-Based Sync](https://www.mongodb.com/docs/realm/reference/partition-based-sync/).
         * @summary Get Partition-Based Sync information
         * @param {any} serviceId The Service ID for the linked cluster.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetSync(serviceId: any, groupId: any, appId: any, options?: any): AxiosPromise<PbsSyncResponse> {
            return localVarFp.adminGetSync(serviceId, groupId, appId, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * SyncApi - interface
 * @export
 * @interface SyncApi
 */
export interface SyncApiInterface {
    /**
     * Retrieve sync data for a specific Atlas App Services App when using  [Flexible Sync](https://www.mongodb.com/docs/atlas/app-services/sync/get-started/).
     * @summary Get Flexible Sync information
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SyncApiInterface
     */
    adminGetFlexSync(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): AxiosPromise<SyncDataResponse>;

    /**
     * Retrieve partition field data when using  [Partition-Based Sync](https://www.mongodb.com/docs/realm/reference/partition-based-sync/).
     * @summary Get Partition-Based Sync information
     * @param {any} serviceId The Service ID for the linked cluster.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SyncApiInterface
     */
    adminGetSync(serviceId: any, groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<PbsSyncResponse>;

}

/**
 * SyncApi - object-oriented interface
 * @export
 * @class SyncApi
 * @extends {BaseAPI}
 */
export class SyncApi extends BaseAPI implements SyncApiInterface {
    /**
     * Retrieve sync data for a specific Atlas App Services App when using  [Flexible Sync](https://www.mongodb.com/docs/atlas/app-services/sync/get-started/).
     * @summary Get Flexible Sync information
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SyncApi
     */
    public adminGetFlexSync(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig) {
        return SyncApiFp(this.configuration).adminGetFlexSync(groupId, appId, serviceId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Retrieve partition field data when using  [Partition-Based Sync](https://www.mongodb.com/docs/realm/reference/partition-based-sync/).
     * @summary Get Partition-Based Sync information
     * @param {any} serviceId The Service ID for the linked cluster.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SyncApi
     */
    public adminGetSync(serviceId: any, groupId: any, appId: any, options?: AxiosRequestConfig) {
        return SyncApiFp(this.configuration).adminGetSync(serviceId, groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * TriggersApi - axios parameter creator
 * @export
 */
export const TriggersApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create a new [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Create a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} body A configuration for a database, scheduled, or authentication trigger.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateTrigger: async (groupId: any, appId: any, body: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateTrigger', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateTrigger', 'appId', appId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('adminCreateTrigger', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/triggers`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Remove an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) from your application.
         * @summary Delete a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteTrigger: async (groupId: any, appId: any, triggerId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteTrigger', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteTrigger', 'appId', appId)
            // verify required parameter 'triggerId' is not null or undefined
            assertParamExists('adminDeleteTrigger', 'triggerId', triggerId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/triggers/{triggerId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"triggerId"}}`, encodeURIComponent(String(triggerId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get the configuration for an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Get a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetTrigger: async (groupId: any, appId: any, triggerId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetTrigger', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetTrigger', 'appId', appId)
            // verify required parameter 'triggerId' is not null or undefined
            assertParamExists('adminGetTrigger', 'triggerId', triggerId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/triggers/{triggerId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"triggerId"}}`, encodeURIComponent(String(triggerId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get a list of all [triggers](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Get all triggers
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListTriggers: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListTriggers', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListTriggers', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/triggers`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Resume a [suspended](https://www.mongodb.com/docs/atlas/app-services/triggers/database-triggers/#suspended-triggers) database trigger.
         * @summary Resume a suspended trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {AdminResumeTriggerRequest} [adminResumeTriggerRequest] Configuration options for the resume operation.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminResumeTrigger: async (groupId: any, appId: any, triggerId: any, adminResumeTriggerRequest?: AdminResumeTriggerRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminResumeTrigger', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminResumeTrigger', 'appId', appId)
            // verify required parameter 'triggerId' is not null or undefined
            assertParamExists('adminResumeTrigger', 'triggerId', triggerId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/triggers/{triggerId}/resume`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"triggerId"}}`, encodeURIComponent(String(triggerId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminResumeTriggerRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Modify an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Update a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {any} body The updated trigger configuration.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateTrigger: async (groupId: any, appId: any, triggerId: any, body: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateTrigger', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateTrigger', 'appId', appId)
            // verify required parameter 'triggerId' is not null or undefined
            assertParamExists('adminUpdateTrigger', 'triggerId', triggerId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('adminUpdateTrigger', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/triggers/{triggerId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"triggerId"}}`, encodeURIComponent(String(triggerId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * TriggersApi - functional programming interface
 * @export
 */
export const TriggersApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = TriggersApiAxiosParamCreator(configuration)
    return {
        /**
         * Create a new [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Create a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} body A configuration for a database, scheduled, or authentication trigger.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateTrigger(groupId: any, appId: any, body: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateTrigger(groupId, appId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Remove an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) from your application.
         * @summary Delete a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteTrigger(groupId: any, appId: any, triggerId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteTrigger(groupId, appId, triggerId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get the configuration for an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Get a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetTrigger(groupId: any, appId: any, triggerId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetTrigger(groupId, appId, triggerId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get a list of all [triggers](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Get all triggers
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListTriggers(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListTriggers(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Resume a [suspended](https://www.mongodb.com/docs/atlas/app-services/triggers/database-triggers/#suspended-triggers) database trigger.
         * @summary Resume a suspended trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {AdminResumeTriggerRequest} [adminResumeTriggerRequest] Configuration options for the resume operation.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminResumeTrigger(groupId: any, appId: any, triggerId: any, adminResumeTriggerRequest?: AdminResumeTriggerRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminResumeTrigger(groupId, appId, triggerId, adminResumeTriggerRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Modify an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Update a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {any} body The updated trigger configuration.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateTrigger(groupId: any, appId: any, triggerId: any, body: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateTrigger(groupId, appId, triggerId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * TriggersApi - factory interface
 * @export
 */
export const TriggersApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = TriggersApiFp(configuration)
    return {
        /**
         * Create a new [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Create a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} body A configuration for a database, scheduled, or authentication trigger.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateTrigger(groupId: any, appId: any, body: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminCreateTrigger(groupId, appId, body, options).then((request) => request(axios, basePath));
        },
        /**
         * Remove an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) from your application.
         * @summary Delete a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteTrigger(groupId: any, appId: any, triggerId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminDeleteTrigger(groupId, appId, triggerId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get the configuration for an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Get a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetTrigger(groupId: any, appId: any, triggerId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminGetTrigger(groupId, appId, triggerId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get a list of all [triggers](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Get all triggers
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListTriggers(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListTriggers(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Resume a [suspended](https://www.mongodb.com/docs/atlas/app-services/triggers/database-triggers/#suspended-triggers) database trigger.
         * @summary Resume a suspended trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {AdminResumeTriggerRequest} [adminResumeTriggerRequest] Configuration options for the resume operation.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminResumeTrigger(groupId: any, appId: any, triggerId: any, adminResumeTriggerRequest?: AdminResumeTriggerRequest, options?: any): AxiosPromise<void> {
            return localVarFp.adminResumeTrigger(groupId, appId, triggerId, adminResumeTriggerRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Modify an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
         * @summary Update a trigger
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
         * @param {any} body The updated trigger configuration.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateTrigger(groupId: any, appId: any, triggerId: any, body: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminUpdateTrigger(groupId, appId, triggerId, body, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * TriggersApi - interface
 * @export
 * @interface TriggersApi
 */
export interface TriggersApiInterface {
    /**
     * Create a new [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
     * @summary Create a trigger
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} body A configuration for a database, scheduled, or authentication trigger.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApiInterface
     */
    adminCreateTrigger(groupId: any, appId: any, body: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Remove an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) from your application.
     * @summary Delete a trigger
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApiInterface
     */
    adminDeleteTrigger(groupId: any, appId: any, triggerId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Get the configuration for an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
     * @summary Get a trigger
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApiInterface
     */
    adminGetTrigger(groupId: any, appId: any, triggerId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Get a list of all [triggers](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
     * @summary Get all triggers
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApiInterface
     */
    adminListTriggers(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Resume a [suspended](https://www.mongodb.com/docs/atlas/app-services/triggers/database-triggers/#suspended-triggers) database trigger.
     * @summary Resume a suspended trigger
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
     * @param {AdminResumeTriggerRequest} [adminResumeTriggerRequest] Configuration options for the resume operation.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApiInterface
     */
    adminResumeTrigger(groupId: any, appId: any, triggerId: any, adminResumeTriggerRequest?: AdminResumeTriggerRequest, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Modify an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
     * @summary Update a trigger
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
     * @param {any} body The updated trigger configuration.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApiInterface
     */
    adminUpdateTrigger(groupId: any, appId: any, triggerId: any, body: any, options?: AxiosRequestConfig): AxiosPromise<void>;

}

/**
 * TriggersApi - object-oriented interface
 * @export
 * @class TriggersApi
 * @extends {BaseAPI}
 */
export class TriggersApi extends BaseAPI implements TriggersApiInterface {
    /**
     * Create a new [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
     * @summary Create a trigger
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} body A configuration for a database, scheduled, or authentication trigger.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApi
     */
    public adminCreateTrigger(groupId: any, appId: any, body: any, options?: AxiosRequestConfig) {
        return TriggersApiFp(this.configuration).adminCreateTrigger(groupId, appId, body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Remove an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) from your application.
     * @summary Delete a trigger
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApi
     */
    public adminDeleteTrigger(groupId: any, appId: any, triggerId: any, options?: AxiosRequestConfig) {
        return TriggersApiFp(this.configuration).adminDeleteTrigger(groupId, appId, triggerId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get the configuration for an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
     * @summary Get a trigger
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApi
     */
    public adminGetTrigger(groupId: any, appId: any, triggerId: any, options?: AxiosRequestConfig) {
        return TriggersApiFp(this.configuration).adminGetTrigger(groupId, appId, triggerId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get a list of all [triggers](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
     * @summary Get all triggers
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApi
     */
    public adminListTriggers(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return TriggersApiFp(this.configuration).adminListTriggers(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Resume a [suspended](https://www.mongodb.com/docs/atlas/app-services/triggers/database-triggers/#suspended-triggers) database trigger.
     * @summary Resume a suspended trigger
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
     * @param {AdminResumeTriggerRequest} [adminResumeTriggerRequest] Configuration options for the resume operation.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApi
     */
    public adminResumeTrigger(groupId: any, appId: any, triggerId: any, adminResumeTriggerRequest?: AdminResumeTriggerRequest, options?: AxiosRequestConfig) {
        return TriggersApiFp(this.configuration).adminResumeTrigger(groupId, appId, triggerId, adminResumeTriggerRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Modify an existing [trigger](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/) in your application.
     * @summary Update a trigger
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} triggerId The unique &#x60;_id&#x60; value of a trigger.
     * @param {any} body The updated trigger configuration.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TriggersApi
     */
    public adminUpdateTrigger(groupId: any, appId: any, triggerId: any, body: any, options?: AxiosRequestConfig) {
        return TriggersApiFp(this.configuration).adminUpdateTrigger(groupId, appId, triggerId, body, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * UsersApi - axios parameter creator
 * @export
 */
export const UsersApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create a new [email/password](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) user account.  *Note:* You cannot create user accounts through the Admin API for any authentication provider other than email/password.
         * @summary Create a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateUserRequest} adminCreateUserRequest The user to create
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateUser: async (groupId: any, appId: any, adminCreateUserRequest: AdminCreateUserRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateUser', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateUser', 'appId', appId)
            // verify required parameter 'adminCreateUserRequest' is not null or undefined
            assertParamExists('adminCreateUser', 'adminCreateUserRequest', adminCreateUserRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/users`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminCreateUserRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a pending [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Delete a pending email/password authentication user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeletePendingEmailPasswordUser: async (groupId: any, appId: any, email: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeletePendingEmailPasswordUser', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeletePendingEmailPasswordUser', 'appId', appId)
            // verify required parameter 'email' is not null or undefined
            assertParamExists('adminDeletePendingEmailPasswordUser', 'email', email)
            const localVarPath = `/groups/{groupId}/apps/{appId}/user_registrations/by_email/{email}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"email"}}`, encodeURIComponent(String(email)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a specific [user account](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts) by ID.
         * @summary Delete a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteUser: async (groupId: any, appId: any, userId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteUser', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteUser', 'appId', appId)
            // verify required parameter 'userId' is not null or undefined
            assertParamExists('adminDeleteUser', 'userId', userId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/users/{userId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"userId"}}`, encodeURIComponent(String(userId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Disable a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Disable a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDisableUser: async (groupId: any, appId: any, userId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDisableUser', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDisableUser', 'appId', appId)
            // verify required parameter 'userId' is not null or undefined
            assertParamExists('adminDisableUser', 'userId', userId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/users/{userId}/disable`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"userId"}}`, encodeURIComponent(String(userId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Enable a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Enable a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminEnableUser: async (groupId: any, appId: any, userId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminEnableUser', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminEnableUser', 'appId', appId)
            // verify required parameter 'userId' is not null or undefined
            assertParamExists('adminEnableUser', 'userId', userId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/users/{userId}/enable`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"userId"}}`, encodeURIComponent(String(userId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get a specific [user account](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts) by ID.
         * @summary Get a User
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetUser: async (groupId: any, appId: any, userId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetUser', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetUser', 'appId', appId)
            // verify required parameter 'userId' is not null or undefined
            assertParamExists('adminGetUser', 'userId', userId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/users/{userId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"userId"}}`, encodeURIComponent(String(userId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @summary List a user\'s devices
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListDevices: async (groupId: any, appId: any, userId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListDevices', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListDevices', 'appId', appId)
            // verify required parameter 'userId' is not null or undefined
            assertParamExists('adminListDevices', 'userId', userId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/users/{userId}/devices`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"userId"}}`, encodeURIComponent(String(userId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List pending user account registrations. Returns up to 50 pending users in a call.
         * @summary List pending users
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [after] The unique &#x60;&#x60;_id&#x60;&#x60; for a pending user. &#x60;&#x60;List pending users&#x60;&#x60; can return 50 pending users at a time. To view additional results, find the &#x60;&#x60;_id&#x60;&#x60; of the last pending user listed in the previous call to &#x60;&#x60;list pending users&#x60;&#x60;. Call &#x60;&#x60;list pending users&#x60;&#x60; again, passing the &#x60;&#x60;_id&#x60;&#x60; to the after parameter.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListPendingUsers: async (groupId: any, appId: any, after?: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListPendingUsers', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListPendingUsers', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/user_registrations/pending_users`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (after !== undefined) {
                localVarQueryParameter['after'] = after;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List confirmed [user accounts](https://www.mongodb.com/docs/atlas/app-services/authentication#std-label-user-accounts).
         * @summary List users
         * @param {any} [after] The &#x60;id&#x60; of the last user returned by a previous paginated request.
         * @param {any} [sort] The field name to sort results by. The only valid value is the default: &#x60;_id&#x60;.
         * @param {any} [desc] If &#x60;true&#x60;, returns sorted results in descending order. If not specified or set to &#x60;false&#x60;, results return in ascending order.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListUsers: async (after?: any, sort?: any, desc?: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            const localVarPath = `/groups/{groupId}/apps/{appId}/users`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)

            if (after !== undefined) {
                localVarQueryParameter['after'] = after;
            }

            if (sort !== undefined) {
                localVarQueryParameter['sort'] = sort;
            }

            if (desc !== undefined) {
                localVarQueryParameter['desc'] = desc;
            }



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Change the email address for an [email/password user](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) by ID.
         * @summary Change a user\'s email
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {AdminResetUserEmailRequest} adminResetUserEmailRequest The new email address for the user.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminResetUserEmail: async (groupId: any, appId: any, userId: any, adminResetUserEmailRequest: AdminResetUserEmailRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminResetUserEmail', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminResetUserEmail', 'appId', appId)
            // verify required parameter 'userId' is not null or undefined
            assertParamExists('adminResetUserEmail', 'userId', userId)
            // verify required parameter 'adminResetUserEmailRequest' is not null or undefined
            assertParamExists('adminResetUserEmail', 'adminResetUserEmailRequest', adminResetUserEmailRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/users/{userId}/reset_email`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"userId"}}`, encodeURIComponent(String(userId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminResetUserEmailRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Revoke all of a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts)\'s sessions.
         * @summary Revoke user sessions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUserLogout: async (groupId: any, appId: any, userId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUserLogout', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUserLogout', 'appId', appId)
            // verify required parameter 'userId' is not null or undefined
            assertParamExists('adminUserLogout', 'userId', userId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/users/{userId}/logout`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"userId"}}`, encodeURIComponent(String(userId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Verify a that a user\'s client access token is valid.
         * @summary Verify & decode an access token
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminVerifyUserAccessTokenRequest} adminVerifyUserAccessTokenRequest The user\&#39;s client access token. The access token represents a logged in application user. This is not the same as the [&#x60;&#x60;access_token&#x60;&#x60;](https://www.mongodb.com/docs/atlas/app-services/admin/api/v3/#section/Get-Authentication-Tokens) that you use to work with the Admin API.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminVerifyUserAccessToken: async (groupId: any, appId: any, adminVerifyUserAccessTokenRequest: AdminVerifyUserAccessTokenRequest, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminVerifyUserAccessToken', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminVerifyUserAccessToken', 'appId', appId)
            // verify required parameter 'adminVerifyUserAccessTokenRequest' is not null or undefined
            assertParamExists('adminVerifyUserAccessToken', 'adminVerifyUserAccessTokenRequest', adminVerifyUserAccessTokenRequest)
            const localVarPath = `/groups/{groupId}/apps/{appId}/users/verify_token`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(adminVerifyUserAccessTokenRequest, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * UsersApi - functional programming interface
 * @export
 */
export const UsersApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = UsersApiAxiosParamCreator(configuration)
    return {
        /**
         * Create a new [email/password](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) user account.  *Note:* You cannot create user accounts through the Admin API for any authentication provider other than email/password.
         * @summary Create a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateUserRequest} adminCreateUserRequest The user to create
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateUser(groupId: any, appId: any, adminCreateUserRequest: AdminCreateUserRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<User>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateUser(groupId, appId, adminCreateUserRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete a pending [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Delete a pending email/password authentication user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeletePendingEmailPasswordUser(groupId: any, appId: any, email: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeletePendingEmailPasswordUser(groupId, appId, email, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete a specific [user account](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts) by ID.
         * @summary Delete a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteUser(groupId, appId, userId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Disable a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Disable a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDisableUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDisableUser(groupId, appId, userId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Enable a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Enable a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminEnableUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminEnableUser(groupId, appId, userId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Get a specific [user account](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts) by ID.
         * @summary Get a User
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<User>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetUser(groupId, appId, userId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * 
         * @summary List a user\'s devices
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListDevices(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListDevices(groupId, appId, userId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List pending user account registrations. Returns up to 50 pending users in a call.
         * @summary List pending users
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [after] The unique &#x60;&#x60;_id&#x60;&#x60; for a pending user. &#x60;&#x60;List pending users&#x60;&#x60; can return 50 pending users at a time. To view additional results, find the &#x60;&#x60;_id&#x60;&#x60; of the last pending user listed in the previous call to &#x60;&#x60;list pending users&#x60;&#x60;. Call &#x60;&#x60;list pending users&#x60;&#x60; again, passing the &#x60;&#x60;_id&#x60;&#x60; to the after parameter.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListPendingUsers(groupId: any, appId: any, after?: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListPendingUsers(groupId, appId, after, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List confirmed [user accounts](https://www.mongodb.com/docs/atlas/app-services/authentication#std-label-user-accounts).
         * @summary List users
         * @param {any} [after] The &#x60;id&#x60; of the last user returned by a previous paginated request.
         * @param {any} [sort] The field name to sort results by. The only valid value is the default: &#x60;_id&#x60;.
         * @param {any} [desc] If &#x60;true&#x60;, returns sorted results in descending order. If not specified or set to &#x60;false&#x60;, results return in ascending order.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListUsers(after?: any, sort?: any, desc?: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListUsers(after, sort, desc, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Change the email address for an [email/password user](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) by ID.
         * @summary Change a user\'s email
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {AdminResetUserEmailRequest} adminResetUserEmailRequest The new email address for the user.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminResetUserEmail(groupId: any, appId: any, userId: any, adminResetUserEmailRequest: AdminResetUserEmailRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminResetUserEmail(groupId, appId, userId, adminResetUserEmailRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Revoke all of a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts)\'s sessions.
         * @summary Revoke user sessions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUserLogout(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUserLogout(groupId, appId, userId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Verify a that a user\'s client access token is valid.
         * @summary Verify & decode an access token
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminVerifyUserAccessTokenRequest} adminVerifyUserAccessTokenRequest The user\&#39;s client access token. The access token represents a logged in application user. This is not the same as the [&#x60;&#x60;access_token&#x60;&#x60;](https://www.mongodb.com/docs/atlas/app-services/admin/api/v3/#section/Get-Authentication-Tokens) that you use to work with the Admin API.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminVerifyUserAccessToken(groupId: any, appId: any, adminVerifyUserAccessTokenRequest: AdminVerifyUserAccessTokenRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminVerifyUserAccessToken(groupId, appId, adminVerifyUserAccessTokenRequest, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * UsersApi - factory interface
 * @export
 */
export const UsersApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = UsersApiFp(configuration)
    return {
        /**
         * Create a new [email/password](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) user account.  *Note:* You cannot create user accounts through the Admin API for any authentication provider other than email/password.
         * @summary Create a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminCreateUserRequest} adminCreateUserRequest The user to create
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateUser(groupId: any, appId: any, adminCreateUserRequest: AdminCreateUserRequest, options?: any): AxiosPromise<User> {
            return localVarFp.adminCreateUser(groupId, appId, adminCreateUserRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a pending [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Delete a pending email/password authentication user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} email Email address
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeletePendingEmailPasswordUser(groupId: any, appId: any, email: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeletePendingEmailPasswordUser(groupId, appId, email, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a specific [user account](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts) by ID.
         * @summary Delete a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteUser(groupId: any, appId: any, userId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteUser(groupId, appId, userId, options).then((request) => request(axios, basePath));
        },
        /**
         * Disable a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Disable a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDisableUser(groupId: any, appId: any, userId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDisableUser(groupId, appId, userId, options).then((request) => request(axios, basePath));
        },
        /**
         * Enable a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
         * @summary Enable a user
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminEnableUser(groupId: any, appId: any, userId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminEnableUser(groupId, appId, userId, options).then((request) => request(axios, basePath));
        },
        /**
         * Get a specific [user account](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts) by ID.
         * @summary Get a User
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetUser(groupId: any, appId: any, userId: any, options?: any): AxiosPromise<User> {
            return localVarFp.adminGetUser(groupId, appId, userId, options).then((request) => request(axios, basePath));
        },
        /**
         * 
         * @summary List a user\'s devices
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListDevices(groupId: any, appId: any, userId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListDevices(groupId, appId, userId, options).then((request) => request(axios, basePath));
        },
        /**
         * List pending user account registrations. Returns up to 50 pending users in a call.
         * @summary List pending users
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} [after] The unique &#x60;&#x60;_id&#x60;&#x60; for a pending user. &#x60;&#x60;List pending users&#x60;&#x60; can return 50 pending users at a time. To view additional results, find the &#x60;&#x60;_id&#x60;&#x60; of the last pending user listed in the previous call to &#x60;&#x60;list pending users&#x60;&#x60;. Call &#x60;&#x60;list pending users&#x60;&#x60; again, passing the &#x60;&#x60;_id&#x60;&#x60; to the after parameter.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListPendingUsers(groupId: any, appId: any, after?: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListPendingUsers(groupId, appId, after, options).then((request) => request(axios, basePath));
        },
        /**
         * List confirmed [user accounts](https://www.mongodb.com/docs/atlas/app-services/authentication#std-label-user-accounts).
         * @summary List users
         * @param {any} [after] The &#x60;id&#x60; of the last user returned by a previous paginated request.
         * @param {any} [sort] The field name to sort results by. The only valid value is the default: &#x60;_id&#x60;.
         * @param {any} [desc] If &#x60;true&#x60;, returns sorted results in descending order. If not specified or set to &#x60;false&#x60;, results return in ascending order.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListUsers(after?: any, sort?: any, desc?: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListUsers(after, sort, desc, options).then((request) => request(axios, basePath));
        },
        /**
         * Change the email address for an [email/password user](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) by ID.
         * @summary Change a user\'s email
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {AdminResetUserEmailRequest} adminResetUserEmailRequest The new email address for the user.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminResetUserEmail(groupId: any, appId: any, userId: any, adminResetUserEmailRequest: AdminResetUserEmailRequest, options?: any): AxiosPromise<void> {
            return localVarFp.adminResetUserEmail(groupId, appId, userId, adminResetUserEmailRequest, options).then((request) => request(axios, basePath));
        },
        /**
         * Revoke all of a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts)\'s sessions.
         * @summary Revoke user sessions
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} userId User Account ID
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUserLogout(groupId: any, appId: any, userId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminUserLogout(groupId, appId, userId, options).then((request) => request(axios, basePath));
        },
        /**
         * Verify a that a user\'s client access token is valid.
         * @summary Verify & decode an access token
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {AdminVerifyUserAccessTokenRequest} adminVerifyUserAccessTokenRequest The user\&#39;s client access token. The access token represents a logged in application user. This is not the same as the [&#x60;&#x60;access_token&#x60;&#x60;](https://www.mongodb.com/docs/atlas/app-services/admin/api/v3/#section/Get-Authentication-Tokens) that you use to work with the Admin API.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminVerifyUserAccessToken(groupId: any, appId: any, adminVerifyUserAccessTokenRequest: AdminVerifyUserAccessTokenRequest, options?: any): AxiosPromise<any> {
            return localVarFp.adminVerifyUserAccessToken(groupId, appId, adminVerifyUserAccessTokenRequest, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * UsersApi - interface
 * @export
 * @interface UsersApi
 */
export interface UsersApiInterface {
    /**
     * Create a new [email/password](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) user account.  *Note:* You cannot create user accounts through the Admin API for any authentication provider other than email/password.
     * @summary Create a user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminCreateUserRequest} adminCreateUserRequest The user to create
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminCreateUser(groupId: any, appId: any, adminCreateUserRequest: AdminCreateUserRequest, options?: AxiosRequestConfig): AxiosPromise<User>;

    /**
     * Delete a pending [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
     * @summary Delete a pending email/password authentication user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} email Email address
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminDeletePendingEmailPasswordUser(groupId: any, appId: any, email: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Delete a specific [user account](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts) by ID.
     * @summary Delete a user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminDeleteUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Disable a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
     * @summary Disable a user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminDisableUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Enable a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
     * @summary Enable a user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminEnableUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Get a specific [user account](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts) by ID.
     * @summary Get a User
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminGetUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): AxiosPromise<User>;

    /**
     * 
     * @summary List a user\'s devices
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminListDevices(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * List pending user account registrations. Returns up to 50 pending users in a call.
     * @summary List pending users
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [after] The unique &#x60;&#x60;_id&#x60;&#x60; for a pending user. &#x60;&#x60;List pending users&#x60;&#x60; can return 50 pending users at a time. To view additional results, find the &#x60;&#x60;_id&#x60;&#x60; of the last pending user listed in the previous call to &#x60;&#x60;list pending users&#x60;&#x60;. Call &#x60;&#x60;list pending users&#x60;&#x60; again, passing the &#x60;&#x60;_id&#x60;&#x60; to the after parameter.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminListPendingUsers(groupId: any, appId: any, after?: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * List confirmed [user accounts](https://www.mongodb.com/docs/atlas/app-services/authentication#std-label-user-accounts).
     * @summary List users
     * @param {any} [after] The &#x60;id&#x60; of the last user returned by a previous paginated request.
     * @param {any} [sort] The field name to sort results by. The only valid value is the default: &#x60;_id&#x60;.
     * @param {any} [desc] If &#x60;true&#x60;, returns sorted results in descending order. If not specified or set to &#x60;false&#x60;, results return in ascending order.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminListUsers(after?: any, sort?: any, desc?: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Change the email address for an [email/password user](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) by ID.
     * @summary Change a user\'s email
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {AdminResetUserEmailRequest} adminResetUserEmailRequest The new email address for the user.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminResetUserEmail(groupId: any, appId: any, userId: any, adminResetUserEmailRequest: AdminResetUserEmailRequest, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Revoke all of a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts)\'s sessions.
     * @summary Revoke user sessions
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminUserLogout(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Verify a that a user\'s client access token is valid.
     * @summary Verify & decode an access token
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminVerifyUserAccessTokenRequest} adminVerifyUserAccessTokenRequest The user\&#39;s client access token. The access token represents a logged in application user. This is not the same as the [&#x60;&#x60;access_token&#x60;&#x60;](https://www.mongodb.com/docs/atlas/app-services/admin/api/v3/#section/Get-Authentication-Tokens) that you use to work with the Admin API.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApiInterface
     */
    adminVerifyUserAccessToken(groupId: any, appId: any, adminVerifyUserAccessTokenRequest: AdminVerifyUserAccessTokenRequest, options?: AxiosRequestConfig): AxiosPromise<any>;

}

/**
 * UsersApi - object-oriented interface
 * @export
 * @class UsersApi
 * @extends {BaseAPI}
 */
export class UsersApi extends BaseAPI implements UsersApiInterface {
    /**
     * Create a new [email/password](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) user account.  *Note:* You cannot create user accounts through the Admin API for any authentication provider other than email/password.
     * @summary Create a user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminCreateUserRequest} adminCreateUserRequest The user to create
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminCreateUser(groupId: any, appId: any, adminCreateUserRequest: AdminCreateUserRequest, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminCreateUser(groupId, appId, adminCreateUserRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a pending [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
     * @summary Delete a pending email/password authentication user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} email Email address
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminDeletePendingEmailPasswordUser(groupId: any, appId: any, email: any, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminDeletePendingEmailPasswordUser(groupId, appId, email, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a specific [user account](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts) by ID.
     * @summary Delete a user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminDeleteUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminDeleteUser(groupId, appId, userId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Disable a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
     * @summary Disable a user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminDisableUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminDisableUser(groupId, appId, userId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Enable a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts).
     * @summary Enable a user
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminEnableUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminEnableUser(groupId, appId, userId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Get a specific [user account](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts) by ID.
     * @summary Get a User
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminGetUser(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminGetUser(groupId, appId, userId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * 
     * @summary List a user\'s devices
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminListDevices(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminListDevices(groupId, appId, userId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List pending user account registrations. Returns up to 50 pending users in a call.
     * @summary List pending users
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} [after] The unique &#x60;&#x60;_id&#x60;&#x60; for a pending user. &#x60;&#x60;List pending users&#x60;&#x60; can return 50 pending users at a time. To view additional results, find the &#x60;&#x60;_id&#x60;&#x60; of the last pending user listed in the previous call to &#x60;&#x60;list pending users&#x60;&#x60;. Call &#x60;&#x60;list pending users&#x60;&#x60; again, passing the &#x60;&#x60;_id&#x60;&#x60; to the after parameter.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminListPendingUsers(groupId: any, appId: any, after?: any, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminListPendingUsers(groupId, appId, after, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List confirmed [user accounts](https://www.mongodb.com/docs/atlas/app-services/authentication#std-label-user-accounts).
     * @summary List users
     * @param {any} [after] The &#x60;id&#x60; of the last user returned by a previous paginated request.
     * @param {any} [sort] The field name to sort results by. The only valid value is the default: &#x60;_id&#x60;.
     * @param {any} [desc] If &#x60;true&#x60;, returns sorted results in descending order. If not specified or set to &#x60;false&#x60;, results return in ascending order.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminListUsers(after?: any, sort?: any, desc?: any, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminListUsers(after, sort, desc, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Change the email address for an [email/password user](https://www.mongodb.com/docs/atlas/app-services/authentication/email-password/) by ID.
     * @summary Change a user\'s email
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {AdminResetUserEmailRequest} adminResetUserEmailRequest The new email address for the user.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminResetUserEmail(groupId: any, appId: any, userId: any, adminResetUserEmailRequest: AdminResetUserEmailRequest, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminResetUserEmail(groupId, appId, userId, adminResetUserEmailRequest, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Revoke all of a [user](https://www.mongodb.com/docs/realm/authentication#std-label-user-accounts)\'s sessions.
     * @summary Revoke user sessions
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} userId User Account ID
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminUserLogout(groupId: any, appId: any, userId: any, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminUserLogout(groupId, appId, userId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Verify a that a user\'s client access token is valid.
     * @summary Verify & decode an access token
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {AdminVerifyUserAccessTokenRequest} adminVerifyUserAccessTokenRequest The user\&#39;s client access token. The access token represents a logged in application user. This is not the same as the [&#x60;&#x60;access_token&#x60;&#x60;](https://www.mongodb.com/docs/atlas/app-services/admin/api/v3/#section/Get-Authentication-Tokens) that you use to work with the Admin API.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UsersApi
     */
    public adminVerifyUserAccessToken(groupId: any, appId: any, adminVerifyUserAccessTokenRequest: AdminVerifyUserAccessTokenRequest, options?: AxiosRequestConfig) {
        return UsersApiFp(this.configuration).adminVerifyUserAccessToken(groupId, appId, adminVerifyUserAccessTokenRequest, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * ValuesApi - axios parameter creator
 * @export
 */
export const ValuesApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Define a [Value](https://www.mongodb.com/docs/realm/values-and-secrets) in an application.
         * @summary Define a Value in an application
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NewValue} newValue The value to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateValue: async (groupId: any, appId: any, newValue: NewValue, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateValue', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateValue', 'appId', appId)
            // verify required parameter 'newValue' is not null or undefined
            assertParamExists('adminCreateValue', 'newValue', newValue)
            const localVarPath = `/groups/{groupId}/apps/{appId}/values`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(newValue, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a [value](https://www.mongodb.com/docs/realm/values-and-secrets) defined in an application.
         * @summary Delete a value defined in an application.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteValue: async (groupId: any, appId: any, valueId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteValue', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteValue', 'appId', appId)
            // verify required parameter 'valueId' is not null or undefined
            assertParamExists('adminDeleteValue', 'valueId', valueId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/values/{valueId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"valueId"}}`, encodeURIComponent(String(valueId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Retrieve a [value](https://www.mongodb.com/docs/realm/values-and-secrets) definition from an application.
         * @summary Retrieve a value definition from an application
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetValue: async (groupId: any, appId: any, valueId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetValue', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetValue', 'appId', appId)
            // verify required parameter 'valueId' is not null or undefined
            assertParamExists('adminGetValue', 'valueId', valueId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/values/{valueId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"valueId"}}`, encodeURIComponent(String(valueId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List all [values](https://www.mongodb.com/docs/realm/values-and-secrets) defined in an application.
         * @summary List all values defined in an application.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListValues: async (groupId: any, appId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListValues', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListValues', 'appId', appId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/values`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update a [value](https://www.mongodb.com/docs/realm/values-and-secrets) definition in an application.
         * @summary Update a value definition in an application
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateValue: async (groupId: any, appId: any, valueId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateValue', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateValue', 'appId', appId)
            // verify required parameter 'valueId' is not null or undefined
            assertParamExists('adminUpdateValue', 'valueId', valueId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/values/{valueId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"valueId"}}`, encodeURIComponent(String(valueId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ValuesApi - functional programming interface
 * @export
 */
export const ValuesApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = ValuesApiAxiosParamCreator(configuration)
    return {
        /**
         * Define a [Value](https://www.mongodb.com/docs/realm/values-and-secrets) in an application.
         * @summary Define a Value in an application
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NewValue} newValue The value to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateValue(groupId: any, appId: any, newValue: NewValue, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<NewValue>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateValue(groupId, appId, newValue, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete a [value](https://www.mongodb.com/docs/realm/values-and-secrets) defined in an application.
         * @summary Delete a value defined in an application.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteValue(groupId: any, appId: any, valueId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteValue(groupId, appId, valueId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Retrieve a [value](https://www.mongodb.com/docs/realm/values-and-secrets) definition from an application.
         * @summary Retrieve a value definition from an application
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetValue(groupId: any, appId: any, valueId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Value>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetValue(groupId, appId, valueId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List all [values](https://www.mongodb.com/docs/realm/values-and-secrets) defined in an application.
         * @summary List all values defined in an application.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListValues(groupId: any, appId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListValues(groupId, appId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update a [value](https://www.mongodb.com/docs/realm/values-and-secrets) definition in an application.
         * @summary Update a value definition in an application
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateValue(groupId: any, appId: any, valueId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateValue(groupId, appId, valueId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * ValuesApi - factory interface
 * @export
 */
export const ValuesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = ValuesApiFp(configuration)
    return {
        /**
         * Define a [Value](https://www.mongodb.com/docs/realm/values-and-secrets) in an application.
         * @summary Define a Value in an application
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {NewValue} newValue The value to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateValue(groupId: any, appId: any, newValue: NewValue, options?: any): AxiosPromise<NewValue> {
            return localVarFp.adminCreateValue(groupId, appId, newValue, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a [value](https://www.mongodb.com/docs/realm/values-and-secrets) defined in an application.
         * @summary Delete a value defined in an application.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteValue(groupId: any, appId: any, valueId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteValue(groupId, appId, valueId, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve a [value](https://www.mongodb.com/docs/realm/values-and-secrets) definition from an application.
         * @summary Retrieve a value definition from an application
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetValue(groupId: any, appId: any, valueId: any, options?: any): AxiosPromise<Value> {
            return localVarFp.adminGetValue(groupId, appId, valueId, options).then((request) => request(axios, basePath));
        },
        /**
         * List all [values](https://www.mongodb.com/docs/realm/values-and-secrets) defined in an application.
         * @summary List all values defined in an application.
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListValues(groupId: any, appId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListValues(groupId, appId, options).then((request) => request(axios, basePath));
        },
        /**
         * Update a [value](https://www.mongodb.com/docs/realm/values-and-secrets) definition in an application.
         * @summary Update a value definition in an application
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateValue(groupId: any, appId: any, valueId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminUpdateValue(groupId, appId, valueId, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * ValuesApi - interface
 * @export
 * @interface ValuesApi
 */
export interface ValuesApiInterface {
    /**
     * Define a [Value](https://www.mongodb.com/docs/realm/values-and-secrets) in an application.
     * @summary Define a Value in an application
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {NewValue} newValue The value to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ValuesApiInterface
     */
    adminCreateValue(groupId: any, appId: any, newValue: NewValue, options?: AxiosRequestConfig): AxiosPromise<NewValue>;

    /**
     * Delete a [value](https://www.mongodb.com/docs/realm/values-and-secrets) defined in an application.
     * @summary Delete a value defined in an application.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ValuesApiInterface
     */
    adminDeleteValue(groupId: any, appId: any, valueId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Retrieve a [value](https://www.mongodb.com/docs/realm/values-and-secrets) definition from an application.
     * @summary Retrieve a value definition from an application
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ValuesApiInterface
     */
    adminGetValue(groupId: any, appId: any, valueId: any, options?: AxiosRequestConfig): AxiosPromise<Value>;

    /**
     * List all [values](https://www.mongodb.com/docs/realm/values-and-secrets) defined in an application.
     * @summary List all values defined in an application.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ValuesApiInterface
     */
    adminListValues(groupId: any, appId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Update a [value](https://www.mongodb.com/docs/realm/values-and-secrets) definition in an application.
     * @summary Update a value definition in an application
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ValuesApiInterface
     */
    adminUpdateValue(groupId: any, appId: any, valueId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

}

/**
 * ValuesApi - object-oriented interface
 * @export
 * @class ValuesApi
 * @extends {BaseAPI}
 */
export class ValuesApi extends BaseAPI implements ValuesApiInterface {
    /**
     * Define a [Value](https://www.mongodb.com/docs/realm/values-and-secrets) in an application.
     * @summary Define a Value in an application
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {NewValue} newValue The value to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ValuesApi
     */
    public adminCreateValue(groupId: any, appId: any, newValue: NewValue, options?: AxiosRequestConfig) {
        return ValuesApiFp(this.configuration).adminCreateValue(groupId, appId, newValue, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a [value](https://www.mongodb.com/docs/realm/values-and-secrets) defined in an application.
     * @summary Delete a value defined in an application.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ValuesApi
     */
    public adminDeleteValue(groupId: any, appId: any, valueId: any, options?: AxiosRequestConfig) {
        return ValuesApiFp(this.configuration).adminDeleteValue(groupId, appId, valueId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Retrieve a [value](https://www.mongodb.com/docs/realm/values-and-secrets) definition from an application.
     * @summary Retrieve a value definition from an application
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ValuesApi
     */
    public adminGetValue(groupId: any, appId: any, valueId: any, options?: AxiosRequestConfig) {
        return ValuesApiFp(this.configuration).adminGetValue(groupId, appId, valueId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List all [values](https://www.mongodb.com/docs/realm/values-and-secrets) defined in an application.
     * @summary List all values defined in an application.
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ValuesApi
     */
    public adminListValues(groupId: any, appId: any, options?: AxiosRequestConfig) {
        return ValuesApiFp(this.configuration).adminListValues(groupId, appId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update a [value](https://www.mongodb.com/docs/realm/values-and-secrets) definition in an application.
     * @summary Update a value definition in an application
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} valueId The unique &#x60;_id&#x60; value of a value.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ValuesApi
     */
    public adminUpdateValue(groupId: any, appId: any, valueId: any, options?: AxiosRequestConfig) {
        return ValuesApiFp(this.configuration).adminUpdateValue(groupId, appId, valueId, options).then((request) => request(this.axios, this.basePath));
    }
}



/**
 * WebhooksApi - axios parameter creator
 * @export
 */
export const WebhooksApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Create a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Create a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} body The webhook to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateWebhook: async (groupId: any, appId: any, serviceId: any, body: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminCreateWebhook', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminCreateWebhook', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminCreateWebhook', 'serviceId', serviceId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('adminCreateWebhook', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/incoming_webhooks`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Delete a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteWebhook: async (groupId: any, appId: any, serviceId: any, incomingWebhookId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminDeleteWebhook', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminDeleteWebhook', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminDeleteWebhook', 'serviceId', serviceId)
            // verify required parameter 'incomingWebhookId' is not null or undefined
            assertParamExists('adminDeleteWebhook', 'incomingWebhookId', incomingWebhookId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/incoming_webhooks/{incomingWebhookId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)))
                .replace(`{${"incomingWebhookId"}}`, encodeURIComponent(String(incomingWebhookId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Retrieve a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Retrieve a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetWebhook: async (groupId: any, appId: any, serviceId: any, incomingWebhookId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminGetWebhook', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminGetWebhook', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminGetWebhook', 'serviceId', serviceId)
            // verify required parameter 'incomingWebhookId' is not null or undefined
            assertParamExists('adminGetWebhook', 'incomingWebhookId', incomingWebhookId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/incoming_webhooks/{incomingWebhookId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)))
                .replace(`{${"incomingWebhookId"}}`, encodeURIComponent(String(incomingWebhookId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List [webhooks](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary List webhooks
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListWebhooks: async (groupId: any, appId: any, serviceId: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminListWebhooks', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminListWebhooks', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminListWebhooks', 'serviceId', serviceId)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/incoming_webhooks`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Update a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
         * @param {any} body The updated state of the webhook.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateWebhook: async (groupId: any, appId: any, serviceId: any, incomingWebhookId: any, body: any, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'groupId' is not null or undefined
            assertParamExists('adminUpdateWebhook', 'groupId', groupId)
            // verify required parameter 'appId' is not null or undefined
            assertParamExists('adminUpdateWebhook', 'appId', appId)
            // verify required parameter 'serviceId' is not null or undefined
            assertParamExists('adminUpdateWebhook', 'serviceId', serviceId)
            // verify required parameter 'incomingWebhookId' is not null or undefined
            assertParamExists('adminUpdateWebhook', 'incomingWebhookId', incomingWebhookId)
            // verify required parameter 'body' is not null or undefined
            assertParamExists('adminUpdateWebhook', 'body', body)
            const localVarPath = `/groups/{groupId}/apps/{appId}/services/{serviceId}/incoming_webhooks/{incomingWebhookId}`
                .replace(`{${"groupId"}}`, encodeURIComponent(String(groupId)))
                .replace(`{${"appId"}}`, encodeURIComponent(String(appId)))
                .replace(`{${"serviceId"}}`, encodeURIComponent(String(serviceId)))
                .replace(`{${"incomingWebhookId"}}`, encodeURIComponent(String(incomingWebhookId)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }

            const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options };
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication tokenAuth required
            // http bearer authentication required
            await setBearerAuthToObject(localVarHeaderParameter, configuration)



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

            setSearchParams(localVarUrlObj, localVarQueryParameter);
            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
            localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers };
            localVarRequestOptions.data = serializeDataIfNeeded(body, localVarRequestOptions, configuration)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * WebhooksApi - functional programming interface
 * @export
 */
export const WebhooksApiFp = function (configuration?: Configuration) {
    const localVarAxiosParamCreator = WebhooksApiAxiosParamCreator(configuration)
    return {
        /**
         * Create a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Create a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} body The webhook to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminCreateWebhook(groupId: any, appId: any, serviceId: any, body: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminCreateWebhook(groupId, appId, serviceId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Delete a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Delete a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminDeleteWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminDeleteWebhook(groupId, appId, serviceId, incomingWebhookId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Retrieve a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Retrieve a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminGetWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminGetWebhook(groupId, appId, serviceId, incomingWebhookId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * List [webhooks](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary List webhooks
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminListWebhooks(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminListWebhooks(groupId, appId, serviceId, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
        /**
         * Update a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Update a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
         * @param {any} body The updated state of the webhook.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async adminUpdateWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, body: any, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
            const localVarAxiosArgs = await localVarAxiosParamCreator.adminUpdateWebhook(groupId, appId, serviceId, incomingWebhookId, body, options);
            return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
        },
    }
};

/**
 * WebhooksApi - factory interface
 * @export
 */
export const WebhooksApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    const localVarFp = WebhooksApiFp(configuration)
    return {
        /**
         * Create a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Create a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} body The webhook to create.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminCreateWebhook(groupId: any, appId: any, serviceId: any, body: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminCreateWebhook(groupId, appId, serviceId, body, options).then((request) => request(axios, basePath));
        },
        /**
         * Delete a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Delete a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminDeleteWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminDeleteWebhook(groupId, appId, serviceId, incomingWebhookId, options).then((request) => request(axios, basePath));
        },
        /**
         * Retrieve a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Retrieve a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminGetWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminGetWebhook(groupId, appId, serviceId, incomingWebhookId, options).then((request) => request(axios, basePath));
        },
        /**
         * List [webhooks](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary List webhooks
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminListWebhooks(groupId: any, appId: any, serviceId: any, options?: any): AxiosPromise<any> {
            return localVarFp.adminListWebhooks(groupId, appId, serviceId, options).then((request) => request(axios, basePath));
        },
        /**
         * Update a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
         * @summary Update a webhook
         * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
         * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
         * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
         * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
         * @param {any} body The updated state of the webhook.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        adminUpdateWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, body: any, options?: any): AxiosPromise<void> {
            return localVarFp.adminUpdateWebhook(groupId, appId, serviceId, incomingWebhookId, body, options).then((request) => request(axios, basePath));
        },
    };
};

/**
 * WebhooksApi - interface
 * @export
 * @interface WebhooksApi
 */
export interface WebhooksApiInterface {
    /**
     * Create a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
     * @summary Create a webhook
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} body The webhook to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof WebhooksApiInterface
     */
    adminCreateWebhook(groupId: any, appId: any, serviceId: any, body: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Delete a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
     * @summary Delete a webhook
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof WebhooksApiInterface
     */
    adminDeleteWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * Retrieve a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
     * @summary Retrieve a webhook
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof WebhooksApiInterface
     */
    adminGetWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, options?: AxiosRequestConfig): AxiosPromise<void>;

    /**
     * List [webhooks](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
     * @summary List webhooks
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof WebhooksApiInterface
     */
    adminListWebhooks(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig): AxiosPromise<any>;

    /**
     * Update a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
     * @summary Update a webhook
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
     * @param {any} body The updated state of the webhook.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof WebhooksApiInterface
     */
    adminUpdateWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, body: any, options?: AxiosRequestConfig): AxiosPromise<void>;

}

/**
 * WebhooksApi - object-oriented interface
 * @export
 * @class WebhooksApi
 * @extends {BaseAPI}
 */
export class WebhooksApi extends BaseAPI implements WebhooksApiInterface {
    /**
     * Create a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
     * @summary Create a webhook
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} body The webhook to create.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof WebhooksApi
     */
    public adminCreateWebhook(groupId: any, appId: any, serviceId: any, body: any, options?: AxiosRequestConfig) {
        return WebhooksApiFp(this.configuration).adminCreateWebhook(groupId, appId, serviceId, body, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Delete a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
     * @summary Delete a webhook
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof WebhooksApi
     */
    public adminDeleteWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, options?: AxiosRequestConfig) {
        return WebhooksApiFp(this.configuration).adminDeleteWebhook(groupId, appId, serviceId, incomingWebhookId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Retrieve a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
     * @summary Retrieve a webhook
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof WebhooksApi
     */
    public adminGetWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, options?: AxiosRequestConfig) {
        return WebhooksApiFp(this.configuration).adminGetWebhook(groupId, appId, serviceId, incomingWebhookId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * List [webhooks](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
     * @summary List webhooks
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof WebhooksApi
     */
    public adminListWebhooks(groupId: any, appId: any, serviceId: any, options?: AxiosRequestConfig) {
        return WebhooksApiFp(this.configuration).adminListWebhooks(groupId, appId, serviceId, options).then((request) => request(this.axios, this.basePath));
    }

    /**
     * Update a [webhook](https://www.mongodb.com/docs/realm/services#std-label-service-webhooks).
     * @summary Update a webhook
     * @param {any} groupId An Atlas [Project/Group ID](https://docs.atlas.mongodb.com/tutorial/manage-projects/).
     * @param {any} appId The ObjectID of your application. [The App Services API Project and Application IDs section](#section/Project-and-Application-IDs) demonstrates how to find this value.
     * @param {any} serviceId The unique &#x60;_id&#x60; value of a service.
     * @param {any} incomingWebhookId The unique &#x60;_id&#x60; value of an incoming webhook
     * @param {any} body The updated state of the webhook.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof WebhooksApi
     */
    public adminUpdateWebhook(groupId: any, appId: any, serviceId: any, incomingWebhookId: any, body: any, options?: AxiosRequestConfig) {
        return WebhooksApiFp(this.configuration).adminUpdateWebhook(groupId, appId, serviceId, incomingWebhookId, body, options).then((request) => request(this.axios, this.basePath));
    }
}



