Enterprise account management including sub-account creation, user management, and access key generation for multi-tenant applications and large-scale deployments.
Create and manage sub-accounts for multi-tenant applications.
/**
* List sub-accounts
* @param enabled - Filter by enabled status
* @param ids - Specific sub-account IDs to retrieve
* @param prefix - Name prefix filter
* @param options - Additional options
* @param callback - Callback function (v1 only)
* @returns Promise with sub-accounts list
*/
function sub_accounts(
enabled?: boolean,
ids?: string[],
prefix?: string,
options?: ProvisioningOptions,
callback?: (error: any, result: any) => void
): Promise<any>;
/**
* Get sub-account details
* @param sub_account_id - Sub-account ID
* @param options - Request options
* @param callback - Callback function (v1 only)
* @returns Promise with sub-account details
*/
function sub_account(
sub_account_id: string,
options?: ProvisioningOptions,
callback?: (error: any, result: any) => void
): Promise<any>;
/**
* Create new sub-account
* @param name - Sub-account name
* @param cloud_name - Cloud name for the sub-account
* @param custom_attributes - Custom attributes
* @param enabled - Whether the sub-account is enabled
* @param base_account - Base account ID
* @param options - Creation options
* @param callback - Callback function (v1 only)
* @returns Promise with creation result
*/
function create_sub_account(
name: string,
cloud_name: string,
custom_attributes?: Record<string, any>,
enabled?: boolean,
base_account?: string,
options?: ProvisioningOptions,
callback?: (error: any, result: any) => void
): Promise<any>;
/**
* Update sub-account
* @param sub_account_id - Sub-account ID to update
* @param name - New name
* @param cloud_name - New cloud name
* @param custom_attributes - Updated attributes
* @param enabled - Enable/disable status
* @param options - Update options
* @param callback - Callback function (v1 only)
* @returns Promise with update result
*/
function update_sub_account(
sub_account_id: string,
name?: string,
cloud_name?: string,
custom_attributes?: Record<string, any>,
enabled?: boolean,
options?: ProvisioningOptions,
callback?: (error: any, result: any) => void
): Promise<any>;
/**
* Delete sub-account
* @param sub_account_id - Sub-account ID to delete
* @param options - Deletion options
* @param callback - Callback function (v1 only)
* @returns Promise with deletion result
*/
function delete_sub_account(
sub_account_id: string,
options?: ProvisioningOptions,
callback?: (error: any, result: any) => void
): Promise<any>;
interface ProvisioningOptions {
/** Account ID for provisioning operations */
account_id?: string;
/** Provisioning API key */
provisioning_api_key?: string;
/** Provisioning API secret */
provisioning_api_secret?: string;
/** HTTP agent configuration */
agent?: any;
/** Content type override */
content_type?: string;
[key: string]: any;
}Manage users across accounts and sub-accounts.
/**
* List users
* @param pending - Include pending users
* @param user_ids - Specific user IDs
* @param prefix - Name/email prefix filter
* @param sub_account_id - Filter by sub-account
* @param options - Request options
* @param callback - Callback function (v1 only)
* @returns Promise with users list
*/
function users(
pending?: boolean,
user_ids?: string[],
prefix?: string,
sub_account_id?: string,
options?: ProvisioningOptions,
callback?: (error: any, result: any) => void
): Promise<any>;
/**
* Get user details
* @param user_id - User ID
* @param options - Request options
* @param callback - Callback function (v1 only)
* @returns Promise with user details
*/
function user(
user_id: string,
options?: ProvisioningOptions,
callback?: (error: any, result: any) => void
): Promise<any>;
/**
* Create new user
* @param name - User's full name
* @param email - User's email address
* @param role - User role
* @param sub_account_ids - Sub-accounts the user has access to
* @param options - Creation options
* @param callback - Callback function (v1 only)
* @returns Promise with creation result
*/
function create_user(
name: string,
email: string,
role: string,
sub_account_ids?: string[],
options?: ProvisioningOptions,
callback?: (error: any, result: any) => void
): Promise<any>;
/**
* Update user
* @param user_id - User ID to update
* @param name - Updated name
* @param email - Updated email
* @param role - Updated role
* @param sub_account_ids - Updated sub-account access
* @param options - Update options
* @param callback - Callback function (v1 only)
* @returns Promise with update result
*/
function update_user(
user_id: string,
name?: string,
email?: string,
role?: string,
sub_account_ids?: string[],
options?: ProvisioningOptions,
callback?: (error: any, result: any) => void
): Promise<any>;
/**
* Delete user
* @param user_id - User ID to delete
* @param options - Deletion options
* @param callback - Callback function (v1 only)
* @returns Promise with deletion result
*/
function delete_user(
user_id: string,
options?: ProvisioningOptions,
callback?: (error: any, result: any) => void
): Promise<any>;Generate and manage API access keys for sub-accounts.
/**
* List access keys for sub-account
* @param sub_account_id - Sub-account ID
* @param options - Listing options
* @param callback - Callback function (v1 only)
* @returns Promise with access keys list
*/
function access_keys(
sub_account_id: string,
options?: ProvisioningOptions & {
page_size?: number;
page?: number;
sort_by?: string;
sort_order?: 'asc' | 'desc';
},
callback?: (error: any, result: AccessKeysListResponse) => void
): Promise<AccessKeysListResponse>;
/**
* Generate new access key
* @param sub_account_id - Sub-account ID
* @param options - Key generation options
* @param callback - Callback function (v1 only)
* @returns Promise with access key details
*/
function generate_access_key(
sub_account_id: string,
options?: ProvisioningOptions & {
name?: string;
enabled?: boolean;
},
callback?: (error: any, result: AccessKeyDetails) => void
): Promise<AccessKeyDetails>;
/**
* Update access key
* @param sub_account_id - Sub-account ID
* @param api_key - API key to update
* @param options - Update options
* @param callback - Callback function (v1 only)
* @returns Promise with updated key details
*/
function update_access_key(
sub_account_id: string,
api_key: string,
options?: ProvisioningOptions & {
name?: string;
enabled?: boolean;
},
callback?: (error: any, result: AccessKeyDetails) => void
): Promise<AccessKeyDetails>;
/**
* Delete access key
* @param sub_account_id - Sub-account ID
* @param api_key - API key to delete
* @param options - Deletion options
* @param callback - Callback function (v1 only)
* @returns Promise with deletion result
*/
function delete_access_key(
sub_account_id: string,
api_key: string,
options?: ProvisioningOptions,
callback?: (error: any, result: DeleteAccessKeyResponse) => void
): Promise<DeleteAccessKeyResponse>;
interface AccessKeyDetails {
name: string;
api_key: string;
api_secret: string;
created_at: string;
updated_at: string;
enabled: boolean;
}
interface AccessKeysListResponse {
access_keys: AccessKeyDetails[];
total: number;
}
interface DeleteAccessKeyResponse {
message: 'ok' | 'not_found';
}Usage Examples:
const cloudinary = require('cloudinary');
// Configure provisioning API
cloudinary.config({
account_id: 'your_account_id',
provisioning_api_key: 'your_provisioning_key',
provisioning_api_secret: 'your_provisioning_secret'
});
// Create sub-account
const subAccount = await cloudinary.v2.provisioning.account.create_sub_account(
'Client ABC',
'client-abc-cloud',
{ client_id: 'abc123', tier: 'premium' },
true
);
// Create user with access to sub-account
const user = await cloudinary.v2.provisioning.account.create_user(
'John Doe',
'john@clientabc.com',
'Admin',
[subAccount.id]
);
// Generate access keys for sub-account
const accessKey = await cloudinary.v2.provisioning.account.generate_access_key(
subAccount.id,
{
name: 'Production API Key',
enabled: true
}
);
console.log('API Key:', accessKey.api_key);
console.log('API Secret:', accessKey.api_secret);
// List all sub-accounts
const subAccounts = await cloudinary.v2.provisioning.account.sub_accounts(true);
console.log('Active sub-accounts:', subAccounts.sub_accounts.length);interface ProvisioningOptions {
account_id?: string;
provisioning_api_key?: string;
provisioning_api_secret?: string;
agent?: any;
content_type?: string;
[key: string]: any;
}
interface AccessKeyDetails {
name: string;
api_key: string;
api_secret: string;
created_at: string;
updated_at: string;
enabled: boolean;
}
interface AccessKeysListResponse {
access_keys: AccessKeyDetails[];
total: number;
}
interface DeleteAccessKeyResponse {
message: 'ok' | 'not_found';
}