Cumulocity Tenant API

Manage Cumulocity tenants (sub-tenants in enterprise and management hierarchies), tenant options (key-value config including encrypted secrets), tenant applications, and tenant usage statistics. Enterprise customers use this API to programmatically provision and meter sub-tenants.

Cumulocity Tenant API is one of 19 APIs that Cumulocity publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 3 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include IoT, Multi-Tenancy, Administration, and Tenant Options. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 3 Naftiko capability specs.

OpenAPI Specification

cumulocity-tenant-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Cumulocity Tenant API
  version: 10.20.0
  description: |
    Manage Cumulocity tenants (sub-tenants in enterprise and management hierarchies), tenant options
    (key-value config including encrypted secrets), tenant applications, and tenant usage statistics.
servers:
- url: https://{tenant}.cumulocity.com
  variables:
    tenant:
      default: example
security:
- basicAuth: []
- bearerAuth: []
tags:
- name: Tenants
- name: Tenant Options
- name: Tenant Applications
- name: Tenant Statistics
paths:
  /tenant/tenants:
    get:
      tags: [Tenants]
      summary: List Tenants
      operationId: listTenants
      responses:
        '200':
          description: A collection of tenants.
          content:
            application/vnd.com.nsn.cumulocity.tenantCollection+json:
              schema:
                $ref: '#/components/schemas/TenantCollection'
    post:
      tags: [Tenants]
      summary: Create a Tenant
      operationId: createTenant
      requestBody:
        required: true
        content:
          application/vnd.com.nsn.cumulocity.tenant+json:
            schema:
              $ref: '#/components/schemas/Tenant'
      responses:
        '201':
          description: Tenant created.
  /tenant/tenants/{tenantId}:
    parameters:
    - name: tenantId
      in: path
      required: true
      schema: {type: string}
    get:
      tags: [Tenants]
      summary: Retrieve a Tenant
      operationId: getTenant
      responses:
        '200':
          description: A single tenant.
          content:
            application/vnd.com.nsn.cumulocity.tenant+json:
              schema:
                $ref: '#/components/schemas/Tenant'
    put:
      tags: [Tenants]
      summary: Update a Tenant
      operationId: updateTenant
      requestBody:
        required: true
        content:
          application/vnd.com.nsn.cumulocity.tenant+json:
            schema:
              $ref: '#/components/schemas/Tenant'
      responses:
        '200':
          description: Tenant updated.
    delete:
      tags: [Tenants]
      summary: Delete a Tenant
      operationId: deleteTenant
      responses:
        '204':
          description: Tenant deleted.
  /tenant/options:
    get:
      tags: [Tenant Options]
      summary: List Tenant Options
      operationId: listTenantOptions
      responses:
        '200':
          description: A collection of tenant options.
    post:
      tags: [Tenant Options]
      summary: Create a Tenant Option
      operationId: createTenantOption
      requestBody:
        required: true
        content:
          application/vnd.com.nsn.cumulocity.option+json:
            schema:
              $ref: '#/components/schemas/TenantOption'
      responses:
        '201':
          description: Tenant option created.
  /tenant/options/{category}/{key}:
    parameters:
    - name: category
      in: path
      required: true
      schema: {type: string}
    - name: key
      in: path
      required: true
      schema: {type: string}
    get:
      tags: [Tenant Options]
      summary: Retrieve a Tenant Option
      operationId: getTenantOption
      responses:
        '200':
          description: A single tenant option.
    put:
      tags: [Tenant Options]
      summary: Update a Tenant Option
      operationId: updateTenantOption
      requestBody:
        required: true
        content:
          application/vnd.com.nsn.cumulocity.option+json:
            schema:
              $ref: '#/components/schemas/TenantOption'
      responses:
        '200':
          description: Tenant option updated.
    delete:
      tags: [Tenant Options]
      summary: Delete a Tenant Option
      operationId: deleteTenantOption
      responses:
        '204':
          description: Tenant option deleted.
  /tenant/statistics:
    get:
      tags: [Tenant Statistics]
      summary: List Tenant Usage Statistics
      operationId: listTenantStatistics
      parameters:
      - name: dateFrom
        in: query
        schema: {type: string, format: date}
      - name: dateTo
        in: query
        schema: {type: string, format: date}
      responses:
        '200':
          description: Per-day tenant usage statistics.
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    Tenant:
      type: object
      properties:
        id: {type: string}
        self: {type: string, format: uri}
        company: {type: string}
        domain: {type: string}
        adminName: {type: string}
        adminEmail: {type: string}
        contactName: {type: string}
        contactPhone: {type: string}
        parent: {type: string}
        status:
          type: string
          enum: [ACTIVE, SUSPENDED]
        creationTime: {type: string, format: date-time}
        customProperties:
          type: object
        allowCreateTenants: {type: boolean}
    TenantCollection:
      type: object
      properties:
        self: {type: string, format: uri}
        tenants:
          type: array
          items:
            $ref: '#/components/schemas/Tenant'
    TenantOption:
      type: object
      required: [category, key, value]
      properties:
        self: {type: string, format: uri}
        category: {type: string}
        key: {type: string}
        value: {type: string}