/**
 * This file was auto-generated by openapi-typescript.
 * Do not make direct changes to the file.
 */
export interface paths {
    "/dw/rest/v1/apiclients": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Retrieve a paginated list of all API clients.
         * @description Get the list of API clients with no filtering.
         */
        get: operations["getApiClients"];
        put?: never;
        /**
         * Create an API client.
         * @description Create a new API client with the specified properties.
         *     Note: API clients are created with active=false by default and must be explicitly activated.
         */
        post: operations["createApiClient"];
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/dw/rest/v1/apiclients/{apiClientId}": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        /**
         * Retrieve details of a specific API client.
         * @description Gets the API client with the specified ID. Use the expand parameter to retrieve more information on related organizations and roles.
         */
        get: operations["getApiClient"];
        /**
         * Update an API client.
         * @description Apply a partial update to an existing API client. An omitted field stays at its previous value and a contained field replaces the previously saved value.
         */
        put: operations["updateApiClient"];
        post?: never;
        /**
         * Delete an API client.
         * @description Only API clients that have been disabled for at least 7 days can be deleted.
         */
        delete: operations["deleteApiClient"];
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
    "/dw/rest/v1/apiclients/{apiClientId}/password": {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        get?: never;
        /**
         * Change the password for an API client.
         * @description Update an API client's password by providing the current and new password.
         */
        put: operations["changePassword"];
        post?: never;
        delete?: never;
        options?: never;
        head?: never;
        patch?: never;
        trace?: never;
    };
}
export type webhooks = Record<string, never>;
export interface components {
    schemas: {
        /** @description Request body for creating a new API client. */
        APIClientCreate: {
            /** @description Name of the API client. */
            name: string;
            /** @description Description of the API client. */
            description?: string;
            /** @description Public key for JWT authentication. */
            jwtPublicKey?: string | null;
            /** @description List of allowed redirect URLs for OAuth flows. */
            redirectUrls?: string[];
            /** @description OAuth scopes available to this API client. */
            scopes?: string[];
            /** @description Default OAuth scopes granted to this API client. */
            defaultScopes?: string[];
            /** @description List of organization IDs this API client belongs to. */
            organizations: string[];
            /**
             * @description Indicates whether the API client is active. New API clients are created as inactive (false) by default.
             * @default false
             */
            active: boolean;
            /** @description Version control system identifiers. */
            versionControl?: string[];
            /** @description List of IDs of the roles this API client possesses. */
            roles?: string[];
            roleTenantFilter?: components["schemas"]["RoleTenantFilter"];
            /**
             * @description Enforced for OIDC flows.
             * @enum {string}
             */
            tokenEndpointAuthMethod?: "private_key_jwt" | "client_secret_post" | "client_secret_basic" | "none";
            password: string;
        };
        /** @description Request body for updating an existing API client. */
        APIClientUpdate: {
            /** @description Name of the API client. */
            name?: string;
            /** @description Description of the API client. */
            description?: string;
            /** @description Public key for JWT authentication. */
            jwtPublicKey?: string | null;
            /** @description List of allowed redirect URLs for OAuth flows. */
            redirectUrls?: string[];
            /** @description OAuth scopes available to this API client. */
            scopes?: string[];
            /** @description Default OAuth scopes granted to this API client. */
            defaultScopes?: string[];
            /** @description List of organization IDs this API client belongs to. */
            organizations?: string[];
            /**
             * @description Indicates whether the API client is active. New API clients are created as inactive (false) by default.
             * @default false
             */
            active: boolean;
            /** @description Version control system identifiers. */
            versionControl?: string[];
            /** @description List of IDs of the roles this API client possesses. */
            roles?: string[];
            roleTenantFilter?: components["schemas"]["RoleTenantFilter"];
            /**
             * @description Enforced for OIDC flows.
             * @enum {string}
             */
            tokenEndpointAuthMethod?: "private_key_jwt" | "client_secret_post" | "client_secret_basic" | "none";
        };
        /** @description API client object returned in read operations. */
        APIClientRead: {
            /**
             * Format: int64
             * @description Timestamp of the last password modification.
             */
            readonly passwordModificationTimestamp?: number | null;
            /** @description Name of the API client. */
            name?: string;
            /** @description Description of the API client. */
            description?: string;
            /** @description Public key for JWT authentication. */
            jwtPublicKey?: string | null;
            /** @description List of allowed redirect URLs for OAuth flows. */
            redirectUrls?: string[];
            /** @description OAuth scopes available to this API client. */
            scopes?: string[];
            /** @description Default OAuth scopes granted to this API client. */
            defaultScopes?: string[];
            /** @description List of organization IDs this API client belongs to, or organization objects in case the expand parameter was used. */
            organizations?: (string | components["schemas"]["Organization"])[];
            /**
             * @description Indicates whether the API client is active. New API clients are created as inactive (false) by default.
             * @default false
             */
            active: boolean;
            /** @description Version control system identifiers. */
            versionControl?: string[];
            /** @description List of role IDs assigned to this API client, or role objects in case the expand parameter was used. */
            roles?: (string | components["schemas"]["Role"])[];
            roleTenantFilter?: components["schemas"]["RoleTenantFilter"];
            /**
             * @description Enforced for OIDC flows.
             * @enum {string}
             */
            tokenEndpointAuthMethod?: "private_key_jwt" | "client_secret_post" | "client_secret_basic" | "none";
            /**
             * Format: date
             * @description Date of the last successful authentication.
             */
            readonly lastAuthenticatedDate?: string | null;
            /**
             * Format: date-time
             * @description Timestamp when the API client was disabled.
             */
            readonly disabledTimestamp?: string | null;
            /**
             * Format: date-time
             * @description Timestamp when the API client was created.
             */
            readonly createdAt?: string;
            /** @description Map of role tenant filter assignments. */
            readonly roleTenantFilterMap?: Record<string, never>;
            /** @description Unique identifier of the API client. */
            readonly id?: string;
        };
        /** @description Pagination parameters for list operations. */
        Pageable: {
            /**
             * Format: int32
             * @description Zero-based page index.
             */
            page?: number;
            /**
             * Format: int32
             * @description Number of items to return per page.
             * @default 20
             */
            size: number;
        };
        /** @description A paginated collection of API clients. */
        APIClientCollection: {
            content?: components["schemas"]["APIClientRead"][];
        };
        /** @description A role defines permissions and access levels that can be assigned to Users and API Clients. */
        Role: {
            /** @description Description of the role. */
            description?: string;
            /** @description Enumeration name of the role. */
            roleEnumName?: string;
            /** @description List of permissions granted by this role. */
            permissions?: string[];
            /**
             * @description Scope level of the role (global or instance-specific).
             * @enum {string}
             */
            scope?: "GLOBAL" | "INSTANCE";
            /**
             * @description Type of entity this role can be assigned to.
             * @enum {string|null}
             */
            targetType?: "ApiClient" | "User" | null;
            /** @description Indicates if two-factor authentication is required for this role. */
            twoFAEnabled?: boolean;
            /** @description Unique identifier of the role. */
            id?: string;
        };
        /** @description An organization represents a customer, partner, or internal entity within the Account Manager system. */
        Organization: {
            /** @description Name of the organization. */
            name?: string;
            /** @description List of contact user IDs. */
            contactUsers?: string[];
            /** @description List of realm identifiers. */
            realms?: string[];
            /** @description Minimum password entropy requirement. */
            passwordMinEntropy?: number;
            /** @description Number of previous passwords to remember. */
            passwordHistorySize?: number;
            /** @description Number of days until password expires. */
            passwordDaysExpiration?: number;
            /** @description Salesforce account identifiers. */
            sfAccountIds?: string[];
            /**
             * @description Type of organization.
             * @enum {string}
             */
            type?: "CUSTOMER" | "PARTNER" | "INTERNAL";
            /** @description List of role IDs that require two-factor authentication. */
            twoFARoles?: string[];
            /** @description Indicates if two-factor authentication is enabled for the organization. */
            twoFAEnabled?: boolean;
            /** @description Salesforce My Domain name. */
            sfMyDomain?: string | null;
            /** @description Salesforce My Domain suffix. */
            sfMyDomainSuffix?: string;
            /** @description Indicates if Salesforce My Domain is verified. */
            sfMyDomainVerified?: boolean;
            /**
             * Format: date-time
             * @description Timestamp when Salesforce My Domain was verified.
             */
            sfMyDomainVerificationTimestamp?: string | null;
            /**
             * @description Salesforce identity federation status.
             * @enum {string}
             */
            sfIdentityFederation?: "DISABLED" | "ENABLED";
            /** @description Indicates if just-in-time user provisioning is enabled. */
            justInTimeUserProvisioningEnabled?: boolean;
            /** @description List of allowed verifier types for authentication. */
            allowedVerifierTypes?: string[];
            /** @description Indicates if inactive users should be automatically disabled. */
            disableInactiveUsers?: boolean;
            /** @description Number of days before a user is considered inactive. */
            inactiveUserDays?: number;
            /** @description Unique identifier of the organization. */
            readonly id?: string;
        };
        /** @description Standard error response format returned when API requests fail. */
        ErrorResponse: {
            /** @description The list of errors */
            errors?: {
                /** @description Error message */
                message?: string;
                /** @description Error code */
                code?: string;
                /** @description Field-specific errors */
                fieldErrors?: {
                    /** @description List of error codes. */
                    codes?: string[];
                    /** @description Arguments for the error message. */
                    arguments?: unknown;
                    /** @description Default error message. */
                    defaultMessage?: string;
                    /** @description Name of the object that failed validation. */
                    objectName?: string;
                    /** @description The field that contained the erroneous value */
                    field?: string;
                    /** @description The value that was rejected */
                    rejectedValue?: unknown;
                    /** @description Whether this error was caused by failed binding (e.g. type mismatch) */
                    bindingFailure?: boolean;
                    /** @description Error code. */
                    code?: string;
                }[] | null;
            }[];
        };
        /**
         * @description Filter for role tenant assignments. Format: ROLE_ENUM_NAME:instance_id,instance_id;ROLE_ENUM_NAME:instance_id
         *     - Role enum names are separated by semicolons (;)
         *     - Each role enum name is followed by a colon (:) and its tenant filters
         *     - Tenant filters are comma-separated (,)
         *     - Each tenant filter consists of a 4-character realm and 3-character instance_id separated by underscore (_)
         *     - A special case is an instance_id ending in _sbx, as it gives access to all sandboxes of a realm
         *
         *     Example: CC_USER:aabc_prd,aabc_t12;LOGCENTER_USER:aamn_sbx
         */
        RoleTenantFilter: string;
    };
    responses: {
        /** @description Access token is missing or invalid */
        UnauthorizedError: {
            headers: {
                [name: string]: unknown;
            };
            content: {
                /**
                 * @example {
                 *       "errors": [
                 *         {
                 *           "message": "Full authentication is required to access this resource",
                 *           "code": "InsufficientAuthenticationException",
                 *           "fieldErrors": null
                 *         }
                 *       ]
                 *     }
                 */
                "application/json": {
                    /** @description The list of errors. */
                    errors?: {
                        /** @description Error message. */
                        message?: string;
                        /** @description Error code. */
                        code?: string;
                        /** @description Field-specific errors. */
                        fieldErrors?: {
                            /** @description The field that contained the erroneous value. */
                            field?: string;
                            /** @description The value that was rejected. */
                            rejectedValue?: Record<string, never>;
                            /** @description Whether this error was caused by failed binding (e.g. type mismatch). */
                            bindingFailure?: boolean;
                        }[] | null;
                    }[];
                };
            };
        };
        /** @description Request has been rate-limited. The X-RateLimit-* headers can be used to improve retry behavior. */
        RateLimitedError: {
            headers: {
                "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
                "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
                "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
                [name: string]: unknown;
            };
            content?: never;
        };
    };
    parameters: never;
    requestBodies: never;
    headers: {
        /** @description Rate limit per minute. */
        "X-RateLimit-Limit": number;
        /** @description The number of requests left in the current time window. */
        "X-RateLimit-Remaining": number;
        /** @description The UTC timestamp at which the current rate limit window resets. */
        "X-RateLimit-Reset": string;
    };
    pathItems: never;
}
export type $defs = Record<string, never>;
export interface operations {
    getApiClients: {
        parameters: {
            query?: {
                pageable?: components["schemas"]["Pageable"];
            };
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description OK */
            200: {
                headers: {
                    "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
                    "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
                    "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["APIClientCollection"];
                };
            };
            /** @description Bad Request */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Access token is missing or invalid. */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ErrorResponse"];
                };
            };
            429: components["responses"]["RateLimitedError"];
        };
    };
    createApiClient: {
        parameters: {
            query?: never;
            header?: never;
            path?: never;
            cookie?: never;
        };
        requestBody: {
            content: {
                /**
                 * @example {
                 *       "name": "apiclient-stg",
                 *       "description": "Client for staging environment.",
                 *       "organizations": [
                 *         "e39dbb7a-63bd-4972-980b-0f6fb3a24bd6"
                 *       ],
                 *       "password": "MySecureP@ss123",
                 *       "roles": [
                 *         "SALESFORCE_COMMERCE_API"
                 *       ],
                 *       "roleTenantFilter": "SALESFORCE_COMMERCE_API:abcd_prd"
                 *     }
                 */
                "application/json": components["schemas"]["APIClientCreate"];
            };
        };
        responses: {
            /** @description Created */
            201: {
                headers: {
                    "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
                    "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
                    "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
                    /** @description URL to read created API client. */
                    Location?: string;
                    [name: string]: unknown;
                };
                content: {
                    /**
                     * @example {
                     *       "id": "b7d9e3f2-45c8-4a1b-9e6d-8f3a2c7b5e4a",
                     *       "name": "Production Service Client",
                     *       "description": "API client for production services.",
                     *       "passwordModificationTimestamp": null,
                     *       "jwtPublicKey": null,
                     *       "redirectUrls": [],
                     *       "scopes": [
                     *         "mail"
                     *       ],
                     *       "defaultScopes": [
                     *         "mail"
                     *       ],
                     *       "organizations": [
                     *         "f3e7a9c2-68d4-4b5e-9a1f-7c2d8e4b6a9c"
                     *       ],
                     *       "active": false,
                     *       "versionControl": [],
                     *       "roles": [
                     *         "SALESFORCE_COMMERCE_API"
                     *       ],
                     *       "roleTenantFilter": "SALESFORCE_COMMERCE_API:abcd_prd",
                     *       "tokenEndpointAuthMethod": "client_secret_post",
                     *       "lastAuthenticatedDate": null,
                     *       "disabledTimestamp": null,
                     *       "createdAt": "2024-12-04T13:45:00Z"
                     *     }
                     */
                    "application/json": components["schemas"]["APIClientRead"];
                };
            };
            /** @description Bad Request */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ErrorResponse"];
                };
            };
            /** @description Access token is missing or invalid. */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ErrorResponse"];
                };
            };
            /** @description Principal lacks permission to create API client. */
            403: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            429: components["responses"]["RateLimitedError"];
        };
    };
    getApiClient: {
        parameters: {
            query?: {
                /**
                 * @description Comma-separated list of fields that should be expanded in the response. Ensures that fully inlined organization and/or role objects get returned.
                 * @example organizations
                 */
                expand?: ("organizations" | "roles")[];
            };
            header?: never;
            path: {
                apiClientId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description OK */
            200: {
                headers: {
                    "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
                    "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
                    "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
                    [name: string]: unknown;
                };
                content: {
                    /**
                     * @example {
                     *       "id": "b7d9e3f2-45c8-4a1b-9e6d-8f3a2c7b5e4a",
                     *       "name": "Production Service Client",
                     *       "description": "API client for production services.",
                     *       "passwordModificationTimestamp": null,
                     *       "jwtPublicKey": null,
                     *       "redirectUrls": [],
                     *       "scopes": [
                     *         "mail"
                     *       ],
                     *       "defaultScopes": [
                     *         "mail"
                     *       ],
                     *       "organizations": [
                     *         "f3e7a9c2-68d4-4b5e-9a1f-7c2d8e4b6a9c"
                     *       ],
                     *       "active": false,
                     *       "versionControl": [],
                     *       "roles": [],
                     *       "roleTenantFilter": null,
                     *       "tokenEndpointAuthMethod": "client_secret_post",
                     *       "lastAuthenticatedDate": null,
                     *       "disabledTimestamp": null,
                     *       "createdAt": "2024-12-04T13:45:00Z"
                     *     }
                     */
                    "application/json": components["schemas"]["APIClientRead"];
                };
            };
            /** @description Bad Request */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Access token is missing or invalid. */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ErrorResponse"];
                };
            };
            /** @description No API client found with the specified ID. */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            429: components["responses"]["RateLimitedError"];
        };
    };
    updateApiClient: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                apiClientId: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                /**
                 * @example {
                 *       "name": "apiclient-staging",
                 *       "description": "API client for staging services.",
                 *       "organizations": [
                 *         "e39dbb7a-63bd-4972-980b-0f6fb3a24bd6"
                 *       ],
                 *       "password": "SecureP@ssw0rd123"
                 *     }
                 */
                "application/json": components["schemas"]["APIClientUpdate"];
            };
        };
        responses: {
            /** @description OK */
            200: {
                headers: {
                    "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
                    "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
                    "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
                    [name: string]: unknown;
                };
                content: {
                    /**
                     * @example {
                     *       "id": "b7d9e3f2-45c8-4a1b-9e6d-8f3a2c7b5e4a",
                     *       "name": "Production Service Client",
                     *       "description": "API Client for production services",
                     *       "passwordModificationTimestamp": null,
                     *       "jwtPublicKey": null,
                     *       "redirectUrls": [],
                     *       "scopes": [
                     *         "mail"
                     *       ],
                     *       "defaultScopes": [
                     *         "mail"
                     *       ],
                     *       "organizations": [
                     *         "f3e7a9c2-68d4-4b5e-9a1f-7c2d8e4b6a9c"
                     *       ],
                     *       "active": false,
                     *       "versionControl": [],
                     *       "roles": [],
                     *       "roleTenantFilter": null,
                     *       "tokenEndpointAuthMethod": "client_secret_post",
                     *       "lastAuthenticatedDate": null,
                     *       "disabledTimestamp": null,
                     *       "createdAt": "2024-12-04T13:45:00Z"
                     *     }
                     */
                    "application/json": components["schemas"]["APIClientRead"];
                };
            };
            /** @description Bad Request */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ErrorResponse"];
                };
            };
            401: components["responses"]["UnauthorizedError"];
            429: components["responses"]["RateLimitedError"];
        };
    };
    deleteApiClient: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                apiClientId: string;
            };
            cookie?: never;
        };
        requestBody?: never;
        responses: {
            /** @description The resource was deleted successfully. */
            204: {
                headers: {
                    "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
                    "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
                    "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Bad Request */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Access token is missing or invalid. */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ErrorResponse"];
                };
            };
            /** @description Precondition Failed - API client must be disabled for at least 7 days before deletion. */
            412: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            429: components["responses"]["RateLimitedError"];
        };
    };
    changePassword: {
        parameters: {
            query?: never;
            header?: never;
            path: {
                apiClientId: string;
            };
            cookie?: never;
        };
        requestBody: {
            content: {
                "application/json": {
                    /** @description Current password. */
                    old: string;
                    /** @description New password. */
                    new: string;
                };
            };
        };
        responses: {
            /** @description No Content - Password changed successfully */
            204: {
                headers: {
                    "X-RateLimit-Limit": components["headers"]["X-RateLimit-Limit"];
                    "X-RateLimit-Remaining": components["headers"]["X-RateLimit-Remaining"];
                    "X-RateLimit-Reset": components["headers"]["X-RateLimit-Reset"];
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Bad Request */
            400: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            /** @description Access token is missing or invalid. */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ErrorResponse"];
                };
            };
            /** @description Principal lacks permission to change API client password. */
            403: {
                headers: {
                    [name: string]: unknown;
                };
                content?: never;
            };
            429: components["responses"]["RateLimitedError"];
        };
    };
}
