Precog Pipelines API

The Pipelines API from Precog — 18 operation(s) for pipelines.

OpenAPI Specification

precog-pipelines-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: http-api Admin Pipelines API
  version: '1.0'
  summary: The Precog admin HTTP REST API.
  description: The Precog admin HTTP REST API.
  contact:
    url: https://precog.com
    email: support@precog.com
servers:
- url: http://localhost:30000
security:
- BearerAuth: []
tags:
- name: Pipelines
paths:
  /pipelines/{pipeline-id}/metadata:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    get:
      summary: Get metadata related to this pipeline
      tags:
      - Pipelines
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pipeline-metadata'
              examples:
                example-1:
                  value:
                    metadata:
                    - datasetId: 133425/example
                      tables:
                      - tableName: example
                        primaryKey:
                        - id
                        columns:
                        - columnName: id
                          columnType: string
                          maxObservedStringLength: 42
                        - columnName: foo
                          columnType: decimal
                      - tableName: example_items
                        primaryKey:
                        - id_example
                        - array_index
                        foreignKeys:
                          example:
                          - local:
                            - id_example
                          - reference:
                            - id
                        columns:
                        - columnName: id_example
                          columnType: string
                          maxObservedStringLength: 42
                        - columnName: array_index
                          columnType: long
                        - columnName: bar
                          columnType: boolean
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found.
      operationId: get-pipelines-pipeline-id-metadata
      description: Get metadata for a particular particular pipeline.
  /pipelines/{pipeline-id}/dataset-properties:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    get:
      summary: Get dataset properties related to the in-band datasets present in this pipeline
      tags:
      - Pipelines
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pipeline-datasets-properties'
              examples:
                example-1:
                  value:
                    pipelineId: a864cb9a-7be2-11f0-aa5e-2a65c4d820c0
                    datasetProperties:
                      70c7b714-7be3-11f0-a48c-2a65c4d820c0:/Question Bank:
                        primaryKey:
                          type: strict
                          components:
                          - $.data.results[:_].questionId
                          - $.data.results[:_].questionBankId
                      70c7b714-7be3-11f0-a48c-2a65c4d820c0:/Survey Categories:
                        primaryKey:
                          type: strict
                          components:
                          - $.data.results[:_].surveyCategoryId
                          - $.data.results[:_].surveyId
                      70c7b714-7be3-11f0-a48c-2a65c4d820c0:/Survey Templates:
                        primaryKey:
                          type: strict
                          components:
                          - $.data.results[:_].surveyTemplateId
                          - $.data.results[:_].surveyId
                          - $.data.results[:_].id
                      70c7b714-7be3-11f0-a48c-2a65c4d820c0:/Surveys:
                        primaryKey:
                          type: strict
                          components:
                          - $.data.id
        '422':
          description: Returned when the pipeline does not have any in-band datasets
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found.
      operationId: get-pipeline-id-dataset-properties
      description: Get dataset properties for datasets in a particular pipeline.
  /pipelines:
    get:
      summary: Get pipelines
      tags:
      - Pipelines
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/pipeline-listing'
              examples:
                example-1:
                  value:
                  - id: '1'
                    name: Ecommerce
                  - id: '2'
                    name: Internal
                  - id: '3'
                    name: Staging environment
                  - id: '4'
                    name: Test environment
        '401':
          description: Unauthorized
      operationId: get-pipelines
      description: Get all pipelines.
    post:
      summary: Create pipeline
      tags:
      - Pipelines
      operationId: post-pipelines
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/id'
        '400':
          description: 'Bad Request. Includes the case where `vectorize: true` is set on a pipeline whose destination does not support the Snowflake VECTOR column type (LD15) — only Snowflake-family destinations are vector-capable.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
        '401':
          description: Unauthorized
        '422':
          description: Semantic error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
      description: Create a new pipeline.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/pipeline'
        description: ''
  /pipelines/status:
    parameters: []
    get:
      summary: Get the pipeline status
      tags:
      - Pipelines
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/pipeline-status'
              examples:
                example-1:
                  value:
                  - pipelineId: '1'
                    status:
                      at: 1632428787341
                      state: loading
                  - pipelineId: '3'
                    status:
                      at: 1632128787341
                      state: succeeded
                  - pipelineId: '4'
                    status:
                      at: 1631251787341
                      state: failed
        '401':
          description: Unauthorized
      operationId: get-pipelines-status
      description: Get the status of all the pipelines.
  /pipelines/{pipeline-id}:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    get:
      summary: Get a pipeline
      tags:
      - Pipelines
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pipeline'
              examples:
                example:
                  value:
                    id: '1'
                    name: Ecommerce
                    destinationId: '1'
                    columnNameStrategy:
                      tableNamePostfix: true
                    datasetIds:
                    - source-1:path/to/dataset
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found.
      operationId: get-pipelines-pipeline-id
      description: Get a particular pipeline.
    delete:
      summary: ''
      tags:
      - Pipelines
      operationId: delete-pipelines-pipeline-id
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
      description: Deletes the given pipeline
  /pipelines/{pipeline-id}/metrics:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    get:
      summary: Get the pipeline metrics
      tags:
      - Pipelines
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/aggregated-pipeline-metrics'
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found.
      description: Get the metrics from a pipeline
  /pipelines/{pipeline-id}/datasets:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    get:
      summary: Get the pipeline datasets
      tags:
      - Pipelines
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/dataset'
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found.
      operationId: get-pipelines-pipeline-id-datasets
      description: Get the datasets in the provided pipeline.
    patch:
      summary: ''
      tags:
      - Pipelines
      operationId: patch-pipelines-pipeline-id-datasets
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found. <or> Datasets not found.
        '422':
          description: Semantic error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
      description: Add (or remove) datasets to (or from) the provided pipeline.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/dataset-update'
            examples:
              example-1:
                value:
                  action: add
                  datasetIds:
                  - string
  /pipelines/{pipeline-id}/details:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    get:
      summary: Get pipeline details
      tags:
      - Pipelines
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pipeline-details'
              examples:
                example-1:
                  value:
                    datasets:
                    - dataset:
                      - id: '1'
                        name: Abandoned checkouts
                      - id: '2'
                        name: Application charges
                      - id: '3'
                        name: Application credits
                      - id: '4'
                        name: Custom collections
                      - id: '5'
                        name: Customer saved searches
                      - id: '6'
                        name: Customers
                      - id: '7'
                        name: Locations
                      - id: '8'
                        name: Orders
                      - id: '9'
                        name: Price rules
                      - id: '10'
                        name: Products
                      - id: '11'
                        name: Recurring application charges
                      source:
                        id: '1'
                        kind:
                          id: '12'
                          name: Shopify
                        name: 'Shop name: MyShop'
                    destination:
                      id: '1'
                      kind:
                        id: '14'
                        name: Snowflake
                      name: 'Account: Precog, Database: Raw, Region: west-us-2.azure'
                    pipeline:
                      id: '1'
                      name: Ecommerce
                      columnNameStrategy:
                        tableNamePostfix: false
                    schedule:
                    - '*/5 * * * *'
                    notifications:
                    - josie@email.com
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
      operationId: get-pipelines-pipeline-id-details
      description: Get all the details for the provided pipeline.
  /pipelines/{pipeline-id}/status:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    get:
      summary: Get the pipeline datasets status
      tags:
      - Pipelines
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pipeline-dataset-status'
              examples:
                example-1:
                  value:
                    pipelineId: '1'
                    status:
                      state: succeeded
                      at: 0
                    datasets:
                    - id: string
                      outOfBand:
                        state: staging
                        at: 0
                      inBand:
                        state: staging
                        at: 0
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
      operationId: get-pipelines-pipeline-id-status
      description: Get the status of the provided pipeline.
  /pipelines/{pipeline-id}/loads:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    post:
      summary: Start a pipeline load
      tags:
      - Pipelines
      operationId: post-pipelines-pipeline-id-loads
      responses:
        '202':
          description: Accepted - there are in-band datasets and a load has been scheduled to start
        '204':
          description: No Content - there are no in-band datasets
        '400':
          description: Bad Request - there are no datasets in pipeline
        '401':
          description: Unauthorized
        '402':
          description: Payment Required - trial period has expired and there is no active subscription
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    required:
                    - type
                    - details
                    properties:
                      type:
                        type: string
                        minLength: 1
                      details:
                        type: string
                  url:
                    type: string
                required:
                - error
        '404':
          description: Pipeline not found.
        '502':
          description: Problematic Request to External Server
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
      description: Start a load for this pipeline.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                returnUrl:
                  type: string
        description: ''
  /pipelines/{pipeline-id}/rename:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    put:
      summary: Rename a pipelne.
      tags:
      - Pipelines
      operationId: put-pipelines-pipeline-id-rename
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
        '422':
          description: Semantic error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
      description: Rename a pipeline.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/pipeline-name'
  /pipelines/{pipeline-id}/pii-config:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    put:
      summary: Set PII handling policy for a pipeline.
      tags:
      - Pipelines
      operationId: put-pipelines-pipeline-id-pii-config
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
      description: Set the PII handling policy for a pipeline. The policy controls how detected PII columns are transformed at load time.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  enum:
                  - passthrough
                  - hash
                  - omit
                  - nullify
                  description: The PII handling policy to apply.
              required:
              - type
  /pipelines/{pipeline-id}/vectorize:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    put:
      summary: Set the vectorization opt-in flag for a pipeline.
      tags:
      - Pipelines
      operationId: put-pipelines-pipeline-id-vectorize
      responses:
        '204':
          description: No Content
        '400':
          description: Destination does not support vectors. Returned when `vectorize` is `true` and the pipeline's destination is not vector-capable (LD15 — Snowflake-family destinations only).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
      description: "Set the vectorization opt-in flag for a pipeline (vectorization-spec-v4 / LD13).\nSemantics:\n  - `null` or omitted, or `false` → the pipeline does not vectorize;\n    its loads are byte-identical to a pipeline created before this\n    feature existed.\n  - `true` → subsequent loads of datasets in this pipeline produce\n    per-row embeddings (IBM Granite-30M, 384-dim) landed in\n    `<destination_database>.<pipeline-name>.PRETEXT` on the\n    pipeline's destination, in addition to the normal writer output.\n\nFlipping the flag is **not retroactive**. See the `vectorize` field on the `pipeline` schema for the full semantics.\nSetting `true` is only valid on Snowflake-family destinations (LD15); attempts on any other destination are rejected with 400."
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                vectorize:
                  type: boolean
                  nullable: true
                  description: 'The new value of the vectorize flag. `null` and `false` are equivalent: the pipeline does not vectorize.'
                sentimentAnalysis:
                  type: boolean
                  nullable: true
                  description: Enables sentiment analysis on the pipeline. Requires vectorization to also be on, otherwise a 400 will be returned.
              required:
              - vectorize
  /pipelines/{pipeline-id}/encode:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    post:
      summary: Embed query text against the pipeline's vector model.
      tags:
      - Pipelines
      operationId: post-pipelines-pipeline-id-encode
      description: Embed a piece of text using the pipeline's vector model. The returned vector is directly comparable with those stored in the pipeline's PRETEXT destination table, making it suitable for cosine-similarity queries against the corpus.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                text:
                  type: string
                  description: The query text to embed. Must be non-empty.
              required:
              - text
      responses:
        '200':
          description: Embedding produced successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  vec:
                    type: array
                    items:
                      type: number
                    description: The embedding vector for the supplied text.
                  dim:
                    type: integer
                    description: Dimensionality of the returned vector.
                  model_id:
                    type: string
                    description: Identifier of the embedding model used to produce this vector.
                required:
                - vec
                - dim
                - model_id
        '400':
          description: Empty or whitespace-only text.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                - error
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
  /pipelines/{pipeline-id}/semantic-contexts:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    get:
      operationId: get-pipelines-pipeline-id-semantic-contexts
      summary: Get existing semantic contexts of this pipeline
      responses:
        '200':
          description: List of semantic contexts
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/semantic-context'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
        '422':
          description: Semantic error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
      tags:
      - Pipelines
    post:
      operationId: post-pipelines-pipeline-id-semantic-contexts
      summary: Add a semantic context to the pipeline
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/semantic-context-request'
      responses:
        '201':
          description: Semantic context created
          content:
            application/json:
              schema:
                type: object
                properties:
                  semanticContextId:
                    type: string
                    description: ID generated for the newly created semantic context
                    minLength: 1
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
        '422':
          description: Semantic error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
      tags:
      - Pipelines
  /pipelines/{pipeline-id}/semantic-contexts/{semantic-context-id}:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    - schema:
        type: string
      name: semantic-context-id
      in: path
      required: true
    get:
      operationId: get-pipelines-pipeline-id-semantic-contexts-semantic-context-id
      summary: Get the details of the particular semantic context
      responses:
        '200':
          description: Semantic context retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/semantic-context'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
        '401':
          description: Unauthorized
        '404':
          description: Semantic context with this pipeline ID/semantic context ID combination not found
        '422':
          description: Semantic error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
      tags:
      - Pipelines
    put:
      operationId: put-pipelines-pipeline-id-semantic-contexts-semantic-context-id
      summary: Replace details of a semantic context
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/semantic-context-request'
      responses:
        '200':
          description: Semantic context updated
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
        '401':
          description: Unauthorized
        '404':
          description: Semantic context with this pipeline ID/semantic context ID combination not found
        '422':
          description: Semantic error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
      tags:
      - Pipelines
    delete:
      operationId: delete-pipelines-pipeline-id-semantic-contexts-semantic-context-id
      summary: Delete the semantic context
      responses:
        '200':
          description: Semantic context deleted
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
        '401':
          description: Unauthorized
        '404':
          description: Semantic context with this pipeline ID/semantic context ID combination not found
        '422':
          description: Semantic error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
      tags:
      - Pipelines
  /pipelines/{pipeline-id}/schedule:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    put:
      summary: Schedule a pipeline.
      tags:
      - Pipelines
      operationId: put-pipelines-pipeline-id-schedule
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
        '422':
          description: Semantic error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
      description: Schedule a pipeline.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/pipeline-schedule'
        description: A list of cron expressions. An empty list means that the pipeline will not be loaded on a schedule.
    get:
      summary: Get the pipeline schedule
      tags:
      - Pipelines
      operationId: get-pipelines-pipeline-id-schedule
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pipeline-schedule'
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
      description: Get the pipeline schedule.
  /pipelines/{pipeline-id}/notification:
    parameters:
    - schema:
        type: string
      name: pipeline-id
      in: path
      required: true
    put:
      summary: Set email addresses to be notified on pipeline events.
      tags:
      - Pipelines
      operationId: put-pipelines-pipeline-id-notification
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
        '422':
          description: Semantic error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error-message'
      description: Set email addresses to be notified on pipeline events.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/pipeline-notification'
        description: A list of email addresses. An empty list means that email notifications are disabled for the pipeline.
    get:
      summary: Get email addresses associated with the pipeline
      tags:
      - Pipelines
      operationId: get-pipelines-pipeline-id-notification
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pipeline-notification'
        '401':
          description: Unauthorized
        '404':
          description: Pipeline not found
      description: Get email addresses associated with the pipeline.
components:
  schemas:
    dataset-telemetry:
      title: dataset-telemetry
      type: object
      properties:
        at:
          $ref: '#/components/schemas/epoch-millis'
        bytesStaged:
          type: integer
        ratelimitReset:
          $ref: '#/components/schemas/epoch-millis'
      required:
      - at
    dataset:
      title: ''
      type: object
      properties:
        id:
          type: string
          minLength: 1
        name:
          type: string
          minLength: 1
        sourceId:
          type: string
          minLength: 1
      required:
      - id
      - name
      - sourceId
    id:
      title: ''
      type: object
      properties:
        id:
          type: string
      required:
      - id
    pipeline-metadata:
      description: Tables in this pipeline
      type: object
      title: Pipeline metadata
      properties:
        metadata:
          type: array
          title: Datasets
          items:
            $ref: '#/components/schemas/dataset-metadata'
    epoch-millis:
      type: integer
      title: epoch-millis
      minimum: 0
      example: 1742922912239
    initial-load-params-message-limit:
      title: initial-load-params-message-limit
      type: object
      properties:
        maxMessages:
          type: number
      required:
      - maxMessages
    pipeline:
      title: ''
      type: object
      properties:
        id:
          type: string
          minLength: 1
          readOnly: tr

# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/precog/refs/heads/main/openapi/precog-pipelines-api-openapi.yml