Cumulocity DataHub API

Offload operational IoT data (measurements, events, alarms, inventory) from the Cumulocity MongoDB operational store into a Parquet-backed data lake queryable with ANSI SQL via Dremio. Configure offload pipelines, run analytics queries, and export results to BI tools (Power BI, Tableau) over JDBC/ODBC/Arrow Flight.

OpenAPI Specification

cumulocity-datahub-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Cumulocity DataHub API
  version: 2025.1
  description: |
    Offload operational IoT data (measurements, events, alarms, inventory) from the Cumulocity MongoDB
    operational store into a Parquet-backed data lake queryable with ANSI SQL via Dremio. Configure offload
    pipelines, run analytics queries, and export results to BI tools (Power BI, Tableau) over JDBC/ODBC/Arrow Flight.
servers:
- url: https://{tenant}.cumulocity.com
  variables:
    tenant:
      default: example
security:
- basicAuth: []
- bearerAuth: []
tags:
- name: Offload Configurations
- name: Offload Jobs
- name: Queries
paths:
  /service/datahub/offload:
    get:
      tags: [Offload Configurations]
      summary: List Offload Configurations
      operationId: listOffloadConfigurations
      responses:
        '200':
          description: A collection of offload configurations.
    post:
      tags: [Offload Configurations]
      summary: Create an Offload Configuration
      operationId: createOffloadConfiguration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OffloadConfiguration'
      responses:
        '201':
          description: Offload configuration created.
  /service/datahub/offload/{id}:
    parameters:
    - name: id
      in: path
      required: true
      schema: {type: string}
    get:
      tags: [Offload Configurations]
      summary: Retrieve an Offload Configuration
      operationId: getOffloadConfiguration
      responses:
        '200':
          description: A single offload configuration.
    put:
      tags: [Offload Configurations]
      summary: Update an Offload Configuration
      operationId: updateOffloadConfiguration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OffloadConfiguration'
      responses:
        '200':
          description: Offload configuration updated.
    delete:
      tags: [Offload Configurations]
      summary: Delete an Offload Configuration
      operationId: deleteOffloadConfiguration
      responses:
        '204':
          description: Offload configuration deleted.
  /service/datahub/offload/{id}/jobs:
    parameters:
    - name: id
      in: path
      required: true
      schema: {type: string}
    get:
      tags: [Offload Jobs]
      summary: List Offload Jobs
      operationId: listOffloadJobs
      responses:
        '200':
          description: A collection of offload jobs.
    post:
      tags: [Offload Jobs]
      summary: Start an Offload Job
      operationId: startOffloadJob
      responses:
        '201':
          description: Offload job started.
  /service/datahub/query:
    post:
      tags: [Queries]
      summary: Run an Ad-Hoc SQL Query
      operationId: runQuery
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                sql: {type: string}
      responses:
        '200':
          description: Query results.
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    OffloadConfiguration:
      type: object
      properties:
        id: {type: string}
        self: {type: string, format: uri}
        source:
          type: string
          enum: [measurements, events, alarms, inventory, operations, audit]
        filter: {type: string}
        offloadType:
          type: string
          enum: [INITIAL_PLUS_INCREMENT, INCREMENTAL]
        schedule: {type: string}
        status:
          type: string
          enum: [ACTIVE, PAUSED, FAILED]
        targetDataset: {type: string}
        partitioning:
          type: array
          items: {type: string}