Knowi Push Data API

The Knowi Push Data API enables real-time data ingestion to and pull retrieval from Knowi datasets. Push data over HTTP to create or update datasets on the fly, and query results back with SQL-like filters and multiple export formats.

OpenAPI Specification

knowi-push-data-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Knowi Push Data API
  summary: Push and pull real-time data into Knowi datasets.
  description: >-
    The Knowi Push Data API enables real-time data ingestion to and retrieval
    from Knowi datasets. Send data via HTTP POST to create or update datasets
    on the fly, and pull data with SQL-like filters for export. API key
    authentication is used for all requests.
  version: '1.0'
  contact:
    name: Knowi Support
    url: https://www.knowi.com/support
    email: [email protected]
servers:
  - url: https://www.knowi.com
    description: Knowi Push Data API production server
tags:
  - name: Push
    description: Send data to Knowi datasets in real time.
  - name: Pull
    description: Retrieve dataset contents.
paths:
  /live/{identifier}:
    post:
      tags:
        - Push
      summary: Push data to dataset
      description: >-
        Send real-time data to a Knowi dataset. If the named entity does not
        exist, a new dataset is created. Optional override strategies allow
        replacing the entire dataset or replacing values keyed by specific
        fields.
      operationId: pushData
      parameters:
        - name: identifier
          in: path
          required: true
          schema:
            type: string
          description: Dataset identifier (API key associated with the target dataset).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - entity
                - data
              properties:
                entity:
                  type: string
                  description: Dataset name. Created automatically if it does not exist.
                data:
                  type: array
                  description: Records to insert as objects of key-value pairs.
                  items:
                    type: object
                override:
                  type: object
                  description: Override strategy controlling how incoming data is merged.
                  properties:
                    replaceAll:
                      type: boolean
                      description: Replace the entire dataset with the incoming data.
                    replaceValuesForKey:
                      type: array
                      description: Replace records matching the listed key fields.
                      items:
                        type: string
      responses:
        '200':
          description: Data accepted.
        '400':
          description: Invalid payload.
        '401':
          description: Invalid API key.
  /api/data/{apiKey}:
    get:
      tags:
        - Pull
      summary: Pull dataset
      description: Retrieve records from a Knowi dataset, optionally filtered and exported in a chosen format.
      operationId: pullData
      parameters:
        - name: apiKey
          in: path
          required: true
          schema:
            type: string
          description: API key associated with the target dataset.
        - name: entityName
          in: query
          schema:
            type: string
          description: Dataset name.
        - name: identifier
          in: query
          schema:
            type: string
          description: Dataset ID.
        - name: exportFormat
          in: query
          schema:
            type: string
            enum:
              - csv
              - json
          description: Output format for the response payload.
        - name: c9SqlFilter
          in: query
          schema:
            type: string
          description: SQL WHERE clause used to filter the records returned.
        - name: limit
          in: query
          schema:
            type: integer
          description: Maximum number of records to return.
        - name: optimized
          in: query
          schema:
            type: boolean
          description: When true, returns an optimized response format.
      responses:
        '200':
          description: Dataset records returned.
        '401':
          description: Invalid API key.
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
security:
  - ApiKeyAuth: []