Cumulocity Digital Twin Manager API

Model real-world assets and their hierarchies with strongly-typed asset models, custom properties, and computed smart-function values. Asset instances reference the underlying Cumulocity managed objects so measurements and alarms automatically roll up. Supports inheritance, asset-property widgets, and bulk import via CSV.

OpenAPI Specification

cumulocity-dtm-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Cumulocity Digital Twin Manager API
  version: 2025.1
  description: |
    Model real-world assets and their hierarchies with strongly-typed asset models, custom properties,
    and computed smart-function values. Asset instances reference the underlying Cumulocity managed objects
    so measurements and alarms automatically roll up.
servers:
- url: https://{tenant}.cumulocity.com
  variables:
    tenant:
      default: example
security:
- basicAuth: []
- bearerAuth: []
tags:
- name: Asset Models
- name: Asset Instances
- name: Custom Properties
- name: Smart Functions
paths:
  /service/dtm/asset-models:
    get:
      tags: [Asset Models]
      summary: List Asset Models
      operationId: listAssetModels
      responses:
        '200':
          description: A collection of asset models.
    post:
      tags: [Asset Models]
      summary: Create an Asset Model
      operationId: createAssetModel
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetModel'
      responses:
        '201':
          description: Asset model created.
  /service/dtm/asset-models/{id}:
    parameters:
    - name: id
      in: path
      required: true
      schema: {type: string}
    get:
      tags: [Asset Models]
      summary: Retrieve an Asset Model
      operationId: getAssetModel
      responses:
        '200':
          description: A single asset model.
    put:
      tags: [Asset Models]
      summary: Update an Asset Model
      operationId: updateAssetModel
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetModel'
      responses:
        '200':
          description: Asset model updated.
    delete:
      tags: [Asset Models]
      summary: Delete an Asset Model
      operationId: deleteAssetModel
      responses:
        '204':
          description: Asset model deleted.
  /service/dtm/asset-instances:
    get:
      tags: [Asset Instances]
      summary: List Asset Instances
      operationId: listAssetInstances
      parameters:
      - name: model
        in: query
        schema: {type: string}
      responses:
        '200':
          description: A collection of asset instances.
    post:
      tags: [Asset Instances]
      summary: Create an Asset Instance
      operationId: createAssetInstance
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetInstance'
      responses:
        '201':
          description: Asset instance created.
  /service/dtm/asset-instances/{id}:
    parameters:
    - name: id
      in: path
      required: true
      schema: {type: string}
    get:
      tags: [Asset Instances]
      summary: Retrieve an Asset Instance
      operationId: getAssetInstance
      responses:
        '200':
          description: A single asset instance.
    put:
      tags: [Asset Instances]
      summary: Update an Asset Instance
      operationId: updateAssetInstance
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetInstance'
      responses:
        '200':
          description: Asset instance updated.
    delete:
      tags: [Asset Instances]
      summary: Delete an Asset Instance
      operationId: deleteAssetInstance
      responses:
        '204':
          description: Asset instance deleted.
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    AssetModel:
      type: object
      properties:
        id: {type: string}
        self: {type: string, format: uri}
        name: {type: string}
        description: {type: string}
        icon: {type: string}
        properties:
          type: array
          items:
            type: object
            properties:
              key: {type: string}
              label: {type: string}
              type:
                type: string
                enum: [TEXT, NUMBER, BOOLEAN, DATE, ENUM, REFERENCE]
              required: {type: boolean}
              default: {}
        allowedSubtypes:
          type: array
          items: {type: string}
        smartFunctions:
          type: array
          items:
            type: object
            properties:
              name: {type: string}
              expression: {type: string}
    AssetInstance:
      type: object
      properties:
        id: {type: string}
        self: {type: string, format: uri}
        modelId: {type: string}
        name: {type: string}
        managedObjectId: {type: string}
        parent: {type: string}
        properties:
          type: object
          additionalProperties: true
        children:
          type: array
          items: {type: string}