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.

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

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

Tagged areas include IoT, Data Lake, Analytics, SQL, and Apache Arrow. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 2 Naftiko capability specs.

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}