Rockbot Data API

Playback history and asynchronous history exports.

OpenAPI Specification

rockbot-data-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Rockbot Audio Messaging Data API
  version: '5.0'
  x-apisjson-generated: '2026-07-21'
  x-apisjson-method: generated
  x-apisjson-source: https://developer.rockbot.com/api.html
  description: 'Rockbot''s external REST API (v5) lets business customers programmatically control in-location media across their zones and device groups: music playback, audio messaging campaigns, digital-signage campaigns, device status/remote control, and playback history/analytics exports. This OpenAPI description was faithfully generated by the API Evangelist enrichment pipeline from the public documentation at https://developer.rockbot.com — Rockbot does not publish a machine-readable spec. Request/response body schemas are modeled loosely (free-form JSON) where the documentation does not enumerate fields; endpoints, methods, auth, pagination, and rate limits are captured as documented.'
  contact:
    name: Rockbot API Support
    email: support@rockbot.com
    url: https://developer.rockbot.com
servers:
- url: https://api.rockbot.com/v5
  description: Production
security:
- oauth2: []
tags:
- name: Data
  description: Playback history and asynchronous history exports.
paths:
  /ext/data/signage/history:
    get:
      operationId: getSignageHistory
      tags:
      - Data
      summary: Zone-level signage playback records
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      responses:
        '200':
          $ref: '#/components/responses/Paginated'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /ext/data/music/history:
    get:
      operationId: getMusicHistory
      tags:
      - Data
      summary: Zone-level music playback records
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      responses:
        '200':
          $ref: '#/components/responses/Paginated'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /ext/data/messaging/history:
    get:
      operationId: getMessagingHistory
      tags:
      - Data
      summary: Zone-level messaging playback records
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      responses:
        '200':
          $ref: '#/components/responses/Paginated'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /ext/data/music/history/export:
    post:
      operationId: exportMusicHistory
      tags:
      - Data
      summary: Submit a group music-history export job
      responses:
        '200':
          $ref: '#/components/responses/ExportJob'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /ext/data/signage/history/export:
    post:
      operationId: exportSignageHistory
      tags:
      - Data
      summary: Submit a group signage-history export job
      responses:
        '200':
          $ref: '#/components/responses/ExportJob'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /ext/data/messaging/history/export:
    post:
      operationId: exportMessagingHistory
      tags:
      - Data
      summary: Submit a group messaging-history export job
      responses:
        '200':
          $ref: '#/components/responses/ExportJob'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /ext/data/history/exports/{job_id}:
    get:
      operationId: getExportJob
      tags:
      - Data
      summary: Poll asynchronous export job status
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/ExportJob'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  responses:
    RateLimited:
      description: Rate limit exceeded. The default limit is 1 request per second.
    ExportJob:
      description: Export job state.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ExportJob'
    Unauthorized:
      description: Missing or invalid bearer access token.
    Paginated:
      description: Paginated collection.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PaginatedResponse'
  schemas:
    PaginatedResponse:
      type: object
      description: Common pagination envelope shared by paginated endpoints.
      properties:
        total_count:
          type: integer
        page_size:
          type: integer
        page:
          type: integer
        page_count:
          type: integer
        data:
          type: array
          items:
            type: object
            additionalProperties: true
    ExportJob:
      type: object
      description: Asynchronous export job. On completion, `url` holds a presigned link to a JSONL download valid until `expires_at`.
      properties:
        job_id:
          type: string
        status:
          type: string
        url:
          type: string
          format: uri
        expires_at:
          type: string
          format: date-time
  parameters:
    limit:
      name: limit
      in: query
      description: Page size for paginated results.
      schema:
        type: integer
    offset:
      name: offset
      in: query
      description: Zero-based offset for paginated results.
      schema:
        type: integer
  securitySchemes:
    oauth2:
      type: oauth2
      description: 'OAuth 2.0 Client Credentials grant. Exchange a CLIENT_ID/CLIENT_SECRET (issued by Rockbot support) at the token endpoint for a 24-hour bearer ACCESS_TOKEN, then send it as `Authorization: Bearer ACCESS_TOKEN`.'
      flows:
        clientCredentials:
          tokenUrl: https://api.rockbot.com/v5/api-clients/token
          scopes: {}