openapi: 3.1.0 info: title: Couchbase Capella Management API description: >- The Couchbase Capella Management API is a REST API for provisioning, deploying, and configuring Couchbase Capella database-as-a-service deployments across AWS, Azure, and Google Cloud. It enables programmatic management of clusters, buckets, users, and organizations using API key authentication. The API supports automation of cloud database operations including scaling, configuration changes, and access management, with requests limited to 100 per minute per API key. version: '4.0' contact: name: Couchbase Support url: https://support.couchbase.com termsOfService: https://www.couchbase.com/terms-of-use externalDocs: description: Couchbase Capella Management API Documentation url: https://docs.couchbase.com/cloud/management-api-reference/index.html servers: - url: https://cloudapi.cloud.couchbase.com description: Couchbase Capella Cloud API tags: - name: Allowed CIDRs description: >- Endpoints for managing allowed IP addresses and CIDR ranges for cluster access. - name: API Keys description: >- Endpoints for managing API keys used to authenticate with the Management API. - name: Buckets description: >- Endpoints for managing buckets within Capella clusters. - name: Clusters description: >- Endpoints for provisioning, managing, and scaling Capella database clusters. - name: Database Credentials description: >- Endpoints for managing database access credentials for clusters. - name: Organizations description: >- Endpoints for managing Capella organizations. - name: Projects description: >- Endpoints for creating, listing, updating, and deleting projects within an organization. - name: Scopes and Collections description: >- Endpoints for managing scopes and collections within Capella buckets. - name: Users description: >- Endpoints for managing users within a Capella organization. security: - bearerAuth: [] paths: /v4/organizations: get: operationId: listOrganizations summary: List organizations description: >- Returns the list of organizations the authenticated API key has access to. tags: - Organizations responses: '200': description: Successful retrieval of organizations content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Organization' '401': description: Unauthorized access '429': description: Rate limit exceeded /v4/organizations/{organizationId}: get: operationId: getOrganization summary: Get organization details description: >- Returns detailed information about a specific organization. tags: - Organizations parameters: - $ref: '#/components/parameters/organizationId' responses: '200': description: Successful retrieval of organization details content: application/json: schema: $ref: '#/components/schemas/Organization' '401': description: Unauthorized access '404': description: Organization not found '429': description: Rate limit exceeded /v4/organizations/{organizationId}/projects: get: operationId: listProjects summary: List projects description: >- Returns the list of projects within the specified organization. tags: - Projects parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' responses: '200': description: Successful retrieval of projects content: application/json: schema: $ref: '#/components/schemas/PaginatedResponse' '401': description: Unauthorized access '429': description: Rate limit exceeded post: operationId: createProject summary: Create a project description: >- Creates a new project within the specified organization. tags: - Projects parameters: - $ref: '#/components/parameters/organizationId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectCreateRequest' responses: '201': description: Project created successfully content: application/json: schema: $ref: '#/components/schemas/Project' '400': description: Invalid project configuration '401': description: Unauthorized access '429': description: Rate limit exceeded /v4/organizations/{organizationId}/projects/{projectId}: get: operationId: getProject summary: Get project details description: >- Returns detailed information about a specific project. tags: - Projects parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' responses: '200': description: Successful retrieval of project details content: application/json: schema: $ref: '#/components/schemas/Project' '401': description: Unauthorized access '404': description: Project not found '429': description: Rate limit exceeded put: operationId: updateProject summary: Update a project description: >- Updates the configuration of an existing project. tags: - Projects parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectCreateRequest' responses: '204': description: Project updated successfully '400': description: Invalid project configuration '401': description: Unauthorized access '404': description: Project not found '429': description: Rate limit exceeded delete: operationId: deleteProject summary: Delete a project description: >- Deletes the specified project. All resources within the project must be deleted first. tags: - Projects parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' responses: '204': description: Project deleted successfully '401': description: Unauthorized access '404': description: Project not found '422': description: Project contains active resources '429': description: Rate limit exceeded /v4/organizations/{organizationId}/projects/{projectId}/clusters: get: operationId: listClusters summary: List clusters description: >- Returns the list of database clusters within the specified project. tags: - Clusters parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' responses: '200': description: Successful retrieval of clusters content: application/json: schema: $ref: '#/components/schemas/PaginatedResponse' '401': description: Unauthorized access '429': description: Rate limit exceeded post: operationId: createCluster summary: Create a cluster description: >- Provisions a new Couchbase Capella database cluster in the specified project. You can configure the cloud provider, region, instance type, storage, and services. tags: - Clusters parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ClusterCreateRequest' responses: '202': description: Cluster creation initiated content: application/json: schema: $ref: '#/components/schemas/Cluster' '400': description: Invalid cluster configuration '401': description: Unauthorized access '429': description: Rate limit exceeded /v4/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId}: get: operationId: getCluster summary: Get cluster details description: >- Returns detailed information about a specific cluster including its configuration, status, and connection string. tags: - Clusters parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' responses: '200': description: Successful retrieval of cluster details content: application/json: schema: $ref: '#/components/schemas/Cluster' '401': description: Unauthorized access '404': description: Cluster not found '429': description: Rate limit exceeded put: operationId: updateCluster summary: Update a cluster description: >- Updates the configuration of an existing cluster, such as scaling the number of nodes or changing the support plan. tags: - Clusters parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ClusterUpdateRequest' responses: '202': description: Cluster update initiated '400': description: Invalid cluster configuration '401': description: Unauthorized access '404': description: Cluster not found '429': description: Rate limit exceeded delete: operationId: deleteCluster summary: Delete a cluster description: >- Deletes the specified cluster and all its data. This action is irreversible. tags: - Clusters parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' responses: '202': description: Cluster deletion initiated '401': description: Unauthorized access '404': description: Cluster not found '429': description: Rate limit exceeded /v4/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId}/buckets: get: operationId: listCapellaBuckets summary: List buckets in a cluster description: >- Returns the list of buckets within the specified Capella cluster. tags: - Buckets parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' responses: '200': description: Successful retrieval of buckets content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/CapellaBucket' '401': description: Unauthorized access '404': description: Cluster not found '429': description: Rate limit exceeded post: operationId: createCapellaBucket summary: Create a bucket description: >- Creates a new bucket within the specified Capella cluster. tags: - Buckets parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CapellaBucketCreateRequest' responses: '201': description: Bucket created successfully '400': description: Invalid bucket configuration '401': description: Unauthorized access '404': description: Cluster not found '429': description: Rate limit exceeded /v4/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId}/buckets/{bucketId}: get: operationId: getCapellaBucket summary: Get bucket details description: >- Returns detailed information about a specific bucket in a Capella cluster. tags: - Buckets parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' - $ref: '#/components/parameters/bucketId' responses: '200': description: Successful retrieval of bucket details content: application/json: schema: $ref: '#/components/schemas/CapellaBucket' '401': description: Unauthorized access '404': description: Bucket not found '429': description: Rate limit exceeded put: operationId: updateCapellaBucket summary: Update a bucket description: >- Updates the configuration of an existing bucket in a Capella cluster. tags: - Buckets parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' - $ref: '#/components/parameters/bucketId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CapellaBucketUpdateRequest' responses: '204': description: Bucket updated successfully '400': description: Invalid bucket configuration '401': description: Unauthorized access '404': description: Bucket not found '429': description: Rate limit exceeded delete: operationId: deleteCapellaBucket summary: Delete a bucket description: >- Deletes the specified bucket and all its data from the Capella cluster. tags: - Buckets parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' - $ref: '#/components/parameters/bucketId' responses: '204': description: Bucket deleted successfully '401': description: Unauthorized access '404': description: Bucket not found '429': description: Rate limit exceeded /v4/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId}/buckets/{bucketId}/scopes: get: operationId: listCapellaScopes summary: List scopes in a bucket description: >- Returns the list of scopes within the specified bucket. tags: - Scopes and Collections parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' - $ref: '#/components/parameters/bucketId' responses: '200': description: Successful retrieval of scopes content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/CapellaScope' '401': description: Unauthorized access '404': description: Bucket not found '429': description: Rate limit exceeded post: operationId: createCapellaScope summary: Create a scope description: >- Creates a new scope within the specified bucket. tags: - Scopes and Collections parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' - $ref: '#/components/parameters/bucketId' requestBody: required: true content: application/json: schema: type: object required: - name properties: name: type: string description: The name of the scope to create responses: '201': description: Scope created successfully '400': description: Invalid scope configuration '401': description: Unauthorized access '429': description: Rate limit exceeded /v4/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId}/allowedCIDRs: get: operationId: listAllowedCIDRs summary: List allowed CIDRs description: >- Returns the list of allowed IP addresses and CIDR ranges for the specified cluster. tags: - Allowed CIDRs parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' responses: '200': description: Successful retrieval of allowed CIDRs content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/AllowedCIDR' '401': description: Unauthorized access '429': description: Rate limit exceeded post: operationId: addAllowedCIDR summary: Add an allowed CIDR description: >- Adds an allowed IP address or CIDR range for the specified cluster. tags: - Allowed CIDRs parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AllowedCIDRCreateRequest' responses: '201': description: Allowed CIDR added successfully '400': description: Invalid CIDR configuration '401': description: Unauthorized access '429': description: Rate limit exceeded /v4/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId}/allowedCIDRs/{allowedCIDRId}: delete: operationId: deleteAllowedCIDR summary: Delete an allowed CIDR description: >- Removes an allowed IP address or CIDR range from the specified cluster. tags: - Allowed CIDRs parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' - name: allowedCIDRId in: path required: true description: The ID of the allowed CIDR to delete schema: type: string format: uuid responses: '204': description: Allowed CIDR deleted successfully '401': description: Unauthorized access '404': description: Allowed CIDR not found '429': description: Rate limit exceeded /v4/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId}/users: get: operationId: listDatabaseCredentials summary: List database credentials description: >- Returns the list of database access credentials configured for the specified cluster. tags: - Database Credentials parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' responses: '200': description: Successful retrieval of database credentials content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/DatabaseCredential' '401': description: Unauthorized access '429': description: Rate limit exceeded post: operationId: createDatabaseCredential summary: Create database credentials description: >- Creates new database access credentials for the specified cluster. tags: - Database Credentials parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/projectId' - $ref: '#/components/parameters/clusterId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DatabaseCredentialCreateRequest' responses: '201': description: Database credentials created successfully '400': description: Invalid credentials configuration '401': description: Unauthorized access '429': description: Rate limit exceeded /v4/organizations/{organizationId}/apikeys: get: operationId: listApiKeys summary: List API keys description: >- Returns the list of API keys configured for the organization. tags: - API Keys parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' responses: '200': description: Successful retrieval of API keys content: application/json: schema: $ref: '#/components/schemas/PaginatedResponse' '401': description: Unauthorized access '429': description: Rate limit exceeded post: operationId: createApiKey summary: Create an API key description: >- Creates a new API key for authenticating with the Management API. tags: - API Keys parameters: - $ref: '#/components/parameters/organizationId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiKeyCreateRequest' responses: '201': description: API key created successfully content: application/json: schema: $ref: '#/components/schemas/ApiKeyCreateResponse' '400': description: Invalid API key configuration '401': description: Unauthorized access '429': description: Rate limit exceeded /v4/organizations/{organizationId}/users: get: operationId: listCapellaUsers summary: List organization users description: >- Returns the list of users in the specified organization. tags: - Users parameters: - $ref: '#/components/parameters/organizationId' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/perPage' responses: '200': description: Successful retrieval of users content: application/json: schema: $ref: '#/components/schemas/PaginatedResponse' '401': description: Unauthorized access '429': description: Rate limit exceeded components: securitySchemes: bearerAuth: type: http scheme: bearer description: >- Bearer token authentication using a Capella API key secret. parameters: organizationId: name: organizationId in: path required: true description: The UUID of the organization schema: type: string format: uuid projectId: name: projectId in: path required: true description: The UUID of the project schema: type: string format: uuid clusterId: name: clusterId in: path required: true description: The UUID of the cluster schema: type: string format: uuid bucketId: name: bucketId in: path required: true description: The ID of the bucket schema: type: string page: name: page in: query required: false description: Page number for pagination schema: type: integer minimum: 1 default: 1 perPage: name: perPage in: query required: false description: Number of items per page schema: type: integer minimum: 1 maximum: 100 default: 25 schemas: Organization: type: object description: Capella organization properties: id: type: string format: uuid description: Organization UUID name: type: string description: Organization name description: type: string description: Organization description preferences: type: object description: Organization preferences audit: $ref: '#/components/schemas/AuditInfo' Project: type: object description: Capella project within an organization properties: id: type: string format: uuid description: Project UUID name: type: string description: Project name description: type: string description: Project description audit: $ref: '#/components/schemas/AuditInfo' ProjectCreateRequest: type: object description: Request to create or update a project required: - name properties: name: type: string description: Project name maxLength: 128 description: type: string description: Project description maxLength: 1024 Cluster: type: object description: Capella database cluster properties: id: type: string format: uuid description: Cluster UUID name: type: string description: Cluster name description: type: string description: Cluster description cloudProvider: type: object description: Cloud provider configuration properties: type: type: string description: Cloud provider type enum: - aws - azure - gcp region: type: string description: Cloud region cidr: type: string description: CIDR block for the cluster couchbaseServer: type: object description: Couchbase Server configuration properties: version: type: string description: Couchbase Server version serviceGroups: type: array description: Service group configurations items: $ref: '#/components/schemas/ServiceGroup' availability: type: object description: Availability configuration properties: type: type: string description: Availability type enum: - single - multi support: type: object description: Support plan properties: plan: type: string description: Support plan level enum: - basic - developer pro - enterprise timezone: type: string description: Support timezone currentState: type: string description: Current state of the cluster enum: - draft - deploying - healthy - degraded - destroying - peering - scaling - upgrading - rebalancing - turnedOff connectionString: type: string description: Connection string for the cluster audit: $ref: '#/components/schemas/AuditInfo' ClusterCreateRequest: type: object description: Request to create a new cluster required: - name - cloudProvider - serviceGroups - availability - support properties: name: type: string description: Cluster name maxLength: 256 description: type: string description: Cluster description cloudProvider: type: object required: - type - region - cidr properties: type: type: string enum: - aws - azure - gcp region: type: string description: Cloud region identifier cidr: type: string description: CIDR block for the cluster couchbaseServer: type: object properties: version: type: string description: Desired Couchbase Server version serviceGroups: type: array items: $ref: '#/components/schemas/ServiceGroup' availability: type: object required: - type properties: type: type: string enum: - single - multi support: type: object required: - plan - timezone properties: plan: type: string enum: - basic - developer pro - enterprise timezone: type: string ClusterUpdateRequest: type: object description: Request to update an existing cluster properties: name: type: string description: Cluster name description: type: string description: Cluster description serviceGroups: type: array items: $ref: '#/components/schemas/ServiceGroup' support: type: object properties: plan: type: string enum: - basic - developer pro - enterprise timezone: type: string ServiceGroup: type: object description: Service group within a cluster properties: node: type: object description: Node configuration properties: compute: type: object description: Compute instance configuration properties: cpu: type: integer description: Number of CPU cores ram: type: integer description: RAM in gigabytes disk: type: object description: Disk storage configuration properties: type: type: string description: Disk type enum: - gp3 - io2 - P6 - P10 - P15 - P20 - P30 - P40 - P50 - pd-ssd storage: type: integer description: Storage size in gigabytes iops: type: integer description: IOPS for the disk numOfNodes: type: integer description: Number of nodes in the service group minimum: 3 services: type: array description: Services enabled on the nodes items: type: string enum: - data - index - query - search - analytics - eventing CapellaBucket: type: object description: Bucket in a Capella cluster properties: id: type: string description: Bucket ID name: type: string description: Bucket name type: type: string description: Bucket type enum: - couchbase - ephemeral memoryAllocationInMb: type: integer description: Memory allocation in megabytes bucketConflictResolution: type: string description: Conflict resolution type enum: - seqno - lww durabilityLevel: type: string description: Minimum durability level enum: - none - majority - majorityAndPersistActive - persistToMajority replicas: type: integer description: Number of replicas minimum: 1 maximum: 3 flush: type: boolean description: Whether flush is enabled timeToLiveInSeconds: type: integer description: Default TTL in seconds (0 for no expiry) stats: type: object description: Bucket statistics properties: itemCount: type: integer description: Number of items memoryUsedInMib: type: integer description: Memory used in MiB CapellaBucketCreateRequest: type: object description: Request to create a Capella bucket required: - name - memoryAllocationInMb properties: name: type: string description: Bucket name type: type: string description: Bucket type enum: - couchbase - ephemeral default: couchbase memoryAllocationInMb: type: integer description: Memory allocation in megabytes minimum: 100 bucketConflictResolution: type: string enum: - seqno - lww default: seqno durabilityLevel: type: string enum: - none - majority - majorityAndPersistActive - persistToMajority default: none replicas: type: integer minimum: 1 maximum: 3 default: 1 flush: type: boolean default: false timeToLiveInSeconds: type: integer default: 0 CapellaBucketUpdateRequest: type: object description: Request to update a Capella bucket properties: memoryAllocationInMb: type: integer description: Memory allocation in megabytes durabilityLevel: type: string enum: - none - majority - majorityAndPersistActive - persistToMajority replicas: type: integer minimum: 1 maximum: 3 flush: type: boolean timeToLiveInSeconds: type: integer CapellaScope: type: object description: Scope within a Capella bucket properties: name: type: string description: Scope name collections: type: array description: Collections within the scope items: type: object properties: name: type: string description: Collection name maxTTL: type: integer description: Maximum TTL in seconds AllowedCIDR: type: object description: Allowed IP/CIDR for cluster access properties: id: type: string format: uuid description: Allowed CIDR UUID cidr: type: string description: IP address or CIDR range comment: type: string description: Optional comment expiresAt: type: string format: date-time description: Expiration date for temporary access status: type: string description: Status of the allowed CIDR audit: $ref: '#/components/schemas/AuditInfo' AllowedCIDRCreateRequest: type: object description: Request to add an allowed CIDR required: - cidr properties: cidr: type: string description: IP address or CIDR range to allow comment: type: string description: Optional comment describing the entry expiresAt: type: string format: date-time description: Optional expiration for temporary access DatabaseCredential: type: object description: Database access credential properties: id: type: string format: uuid description: Credential UUID name: type: string description: Credential name access: type: array description: Access privileges items: type: object properties: privileges: type: array items: type: string enum: - data_reader - data_writer resources: type: object properties: buckets: type: array items: type: object properties: name: type: string scopes: type: array items: type: object properties: name: type: string collections: type: array items: type: string audit: $ref: '#/components/schemas/AuditInfo' DatabaseCredentialCreateRequest: type: object description: Request to create database credentials required: - name - password - access properties: name: type: string description: Credential name password: type: string description: >- Credential password (must meet complexity requirements) access: type: array description: Access privileges to assign items: type: object properties: privileges: type: array items: type: string enum: - data_reader - data_writer resources: type: object properties: buckets: type: array items: type: object properties: name: type: string ApiKeyCreateRequest: type: object description: Request to create an API key required: - name - organizationRoles properties: name: type: string description: Name for the API key description: type: string description: Description of the API key expiry: type: number description: Expiry time in days (0 for no expiry) organizationRoles: type: array description: Organization-level roles items: type: string enum: - organizationOwner - organizationMember - projectCreator resources: type: array description: Project-specific role assignments items: type: object properties: id: type: string format: uuid description: Project UUID roles: type: array items: type: string enum: - projectOwner - projectManager - projectViewer - projectDataReaderWriter - projectDataReader allowedCIDRs: type: array description: CIDRs allowed to use this API key items: type: string ApiKeyCreateResponse: type: object description: Response after creating an API key properties: id: type: string format: uuid description: API key UUID token: type: string description: >- The API key secret token (only returned once at creation time) PaginatedResponse: type: object description: Paginated response wrapper properties: cursor: type: object description: Pagination cursor information properties: pages: type: object properties: page: type: integer description: Current page number next: type: integer description: Next page number previous: type: integer description: Previous page number last: type: integer description: Last page number perPage: type: integer description: Items per page totalItems: type: integer description: Total number of items data: type: array description: List of items items: {} AuditInfo: type: object description: Audit timestamps properties: createdAt: type: string format: date-time description: Creation timestamp modifiedAt: type: string format: date-time description: Last modification timestamp createdBy: type: string description: User who created the resource modifiedBy: type: string description: User who last modified the resource version: type: integer description: Resource version number