/** * 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; 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; /** @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; /** @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; 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"]; }; }; }