Snowplow Data Products API

Manage data products (tracking plans) which organize event specifications and define the behavioral data strategy for a product or feature.

OpenAPI Specification

snowplow-data-products-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Snowplow Console Authentication Data Products API
  description: The Snowplow Console API provides programmatic management of the Snowplow behavioral data platform. Covers data structures (JSON schemas), data products (tracking plans), event specifications, and credentials management. All endpoints are scoped to an organization and require JWT bearer authentication obtained via the Credentials API.
  version: '1.0'
  contact:
    name: Snowplow Support
    url: https://snowplow.io/support
  termsOfService: https://snowplow.io/terms-of-service
servers:
- url: https://console.snowplowanalytics.com/api/msc/v1
  description: Snowplow Console API
security:
- bearerAuth: []
tags:
- name: Data Products
  description: Manage data products (tracking plans) which organize event specifications and define the behavioral data strategy for a product or feature.
paths:
  /organizations/{organizationId}/data-products/v2:
    get:
      operationId: listDataProducts
      summary: List Data Products
      description: Retrieve a comprehensive list of all data products (tracking plans) in the organization, including their associated event specifications.
      tags:
      - Data Products
      parameters:
      - $ref: '#/components/parameters/organizationId'
      responses:
        '200':
          description: List of data products returned successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DataProduct'
        '401':
          description: Unauthorized
    post:
      operationId: createDataProduct
      summary: Create Data Product
      description: Create a new data product (tracking plan) with a name and optional description and domain metadata.
      tags:
      - Data Products
      parameters:
      - $ref: '#/components/parameters/organizationId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataProductCreate'
      responses:
        '201':
          description: Data product created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
        '400':
          description: Invalid request
        '401':
          description: Unauthorized
  /organizations/{organizationId}/data-products/v2/{dataProductId}:
    get:
      operationId: getDataProduct
      summary: Get Data Product
      description: Retrieve details for a specific data product including all associated event specifications.
      tags:
      - Data Products
      parameters:
      - $ref: '#/components/parameters/organizationId'
      - $ref: '#/components/parameters/dataProductId'
      responses:
        '200':
          description: Data product retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
        '401':
          description: Unauthorized
        '404':
          description: Data product not found
    post:
      operationId: updateDataProduct
      summary: Update Data Product
      description: Update an existing data product. Requires a status field in the request body.
      tags:
      - Data Products
      parameters:
      - $ref: '#/components/parameters/organizationId'
      - $ref: '#/components/parameters/dataProductId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataProductUpdate'
      responses:
        '200':
          description: Data product updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProduct'
        '400':
          description: Invalid request
        '401':
          description: Unauthorized
        '404':
          description: Data product not found
  /organizations/{organizationId}/data-products/v2/{dataProductId}/history:
    get:
      operationId: getDataProductHistory
      summary: Get Data Product History
      description: Fetch the change log for a data product with filtering options by date range and change type.
      tags:
      - Data Products
      parameters:
      - $ref: '#/components/parameters/organizationId'
      - $ref: '#/components/parameters/dataProductId'
      responses:
        '200':
          description: Change history retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/HistoryEntry'
        '401':
          description: Unauthorized
        '404':
          description: Data product not found
components:
  parameters:
    dataProductId:
      name: dataProductId
      in: path
      required: true
      description: The unique identifier of the data product
      schema:
        type: string
        format: uuid
    organizationId:
      name: organizationId
      in: path
      required: true
      description: The Snowplow organization UUID
      schema:
        type: string
        format: uuid
  schemas:
    DataProductCreate:
      type: object
      required:
      - name
      properties:
        name:
          type: string
        description:
          type: string
        domain:
          type: string
    HistoryEntry:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        user:
          type: string
        changeType:
          type: string
        description:
          type: string
    DataProduct:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        description:
          type: string
        status:
          type: string
          enum:
          - active
          - draft
          - deprecated
        domain:
          type: string
        eventSpecificationCount:
          type: integer
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    DataProductUpdate:
      type: object
      required:
      - status
      properties:
        name:
          type: string
        description:
          type: string
        status:
          type: string
          enum:
          - active
          - draft
          - deprecated
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT token obtained from the Credentials API (/credentials/v3/token)
externalDocs:
  description: Snowplow Console API Documentation (Swagger UI)
  url: https://console.snowplowanalytics.com/api/msc/v1/docs/