CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-cloudinary

Cloudinary Node SDK for media management, transformation, upload, and optimization

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

provisioning.mddocs/

Provisioning API

Enterprise account management including sub-account creation, user management, and access key generation for multi-tenant applications and large-scale deployments.

Capabilities

Sub-account Management

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;
}

User Management

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>;

Access Key Management

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);

Types

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';
}

Install with Tessl CLI

npx tessl i tessl/npm-cloudinary

docs

admin-api.md

analysis.md

configuration.md

html-generation.md

index.md

provisioning.md

search.md

upload.md

url-generation.md

tile.json