Precog Pipelines API

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

Operations 26

GET /pipelines/{pipeline-id}/metadata Get metadata related to this pipeline #
GET /pipelines/{pipeline-id}/dataset-properties Get dataset properties related to the in-band datasets present in this pipeline #
GET /pipelines Get pipelines #
POST /pipelines Create pipeline #
GET /pipelines/status Get the pipeline status #
GET /pipelines/{pipeline-id} Get a pipeline #
DELETE /pipelines/{pipeline-id} #
GET /pipelines/{pipeline-id}/metrics Get the pipeline metrics
GET /pipelines/{pipeline-id}/datasets Get the pipeline datasets #
PATCH /pipelines/{pipeline-id}/datasets #
GET /pipelines/{pipeline-id}/details Get pipeline details #
GET /pipelines/{pipeline-id}/status Get the pipeline datasets status #
POST /pipelines/{pipeline-id}/loads Start a pipeline load #
PUT /pipelines/{pipeline-id}/rename Rename a pipelne. #
PUT /pipelines/{pipeline-id}/pii-config Set PII handling policy for a pipeline. #
PUT /pipelines/{pipeline-id}/vectorize Set the vectorization opt-in flag for a pipeline. #
POST /pipelines/{pipeline-id}/encode Embed query text against the pipeline's vector model. #
GET /pipelines/{pipeline-id}/semantic-contexts Get existing semantic contexts of this pipeline #
POST /pipelines/{pipeline-id}/semantic-contexts Add a semantic context to the pipeline #
GET /pipelines/{pipeline-id}/semantic-contexts/{semantic-context-id} Get the details of the particular semantic context #
PUT /pipelines/{pipeline-id}/semantic-contexts/{semantic-context-id} Replace details of a semantic context #
DELETE /pipelines/{pipeline-id}/semantic-contexts/{semantic-context-id} Delete the semantic context #
PUT /pipelines/{pipeline-id}/schedule Schedule a pipeline. #
GET /pipelines/{pipeline-id}/schedule Get the pipeline schedule #
PUT /pipelines/{pipeline-id}/notification Set email addresses to be notified on pipeline events. #
GET /pipelines/{pipeline-id}/notification Get email addresses associated with the pipeline #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/precog-pipelines-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

precog-pipelines-api-openapi.yml Raw ↑
openapi: 3.2.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:
    foreignKey:
      description: Foreign key
      type: object
      required:
      - local
      - reference
      properties:
        local:
          type: array
          items:
            type: string
            minLength: 1
        reference:
          type: array
          items:
            type: string
            minLength: 1
    table:
      description: Table schema
      type: object
      title: Table schema
      properties:
        tableName:
          type: string
          minLength: 1
        primaryKey:
          type: array
          uniqueItems: true
          items:
            type: string
        foreignKeys:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/foreignKey'
        columns:
          type: array
          title: Columns
          items:
            $ref: '#/components/schemas/column'
    pipeline-dataset-status:
      title: ''
      type: object
      properties:
        pipelineId:
          type: string
          minLength: 1
        status:
          $ref: '#/components/schemas/pipeline-load-state'
        datasets:
          type: array
          items:
            $ref: '#/components/schemas/dataset-status'
        driftedDatasets:
          type: array
          readOnly: true
          description: Datasets within this pipeline that have drifted from their initial schema. Only present when non-empty.
          items:
            $ref: '#/component

# --- 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