Openlayer Inference Pipelines API

Production monitoring pipelines and their rows, sessions, and users.

OpenAPI Specification

openlayer-inference-pipelines-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Openlayer Commits Inference Pipelines API
  description: The Openlayer REST API for AI evaluation, testing, and observability. Manage projects, commit model versions and datasets, run and evaluate tests, create inference pipelines for production monitoring, and stream production inference data into Openlayer. All requests are authenticated with a Bearer API key.
  termsOfService: https://www.openlayer.com/terms
  contact:
    name: Openlayer Support
    url: https://www.openlayer.com/docs
    email: support@openlayer.com
  version: '1.0'
servers:
- url: https://api.openlayer.com/v1
  description: Openlayer production API
security:
- api_key: []
tags:
- name: Inference Pipelines
  description: Production monitoring pipelines and their rows, sessions, and users.
paths:
  /projects/{projectId}/inference-pipelines:
    get:
      operationId: listInferencePipelines
      tags:
      - Inference Pipelines
      summary: List inference pipelines
      description: List the inference pipelines in a project.
      parameters:
      - $ref: '#/components/parameters/ProjectId'
      - name: name
        in: query
        required: false
        schema:
          type: string
      - name: page
        in: query
        required: false
        schema:
          type: integer
          default: 1
      - name: perPage
        in: query
        required: false
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: A paginated list of inference pipelines.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferencePipelineList'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createInferencePipeline
      tags:
      - Inference Pipelines
      summary: Create an inference pipeline
      description: Create a new inference pipeline within a project.
      parameters:
      - $ref: '#/components/parameters/ProjectId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInferencePipelineRequest'
      responses:
        '201':
          description: The created inference pipeline.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferencePipeline'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /inference-pipelines/{inferencePipelineId}:
    get:
      operationId: retrieveInferencePipeline
      tags:
      - Inference Pipelines
      summary: Retrieve an inference pipeline
      parameters:
      - $ref: '#/components/parameters/InferencePipelineId'
      responses:
        '200':
          description: The requested inference pipeline.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferencePipeline'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateInferencePipeline
      tags:
      - Inference Pipelines
      summary: Update an inference pipeline
      parameters:
      - $ref: '#/components/parameters/InferencePipelineId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateInferencePipelineRequest'
      responses:
        '200':
          description: The updated inference pipeline.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferencePipeline'
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: deleteInferencePipeline
      tags:
      - Inference Pipelines
      summary: Delete an inference pipeline
      parameters:
      - $ref: '#/components/parameters/InferencePipelineId'
      responses:
        '204':
          description: Inference pipeline deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /inference-pipelines/{inferencePipelineId}/rows:
    post:
      operationId: streamRows
      tags:
      - Inference Pipelines
      summary: Create inference pipeline rows
      parameters:
      - $ref: '#/components/parameters/InferencePipelineId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataStreamRequest'
      responses:
        '200':
          description: Rows created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataStreamResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    put:
      operationId: updateRow
      tags:
      - Inference Pipelines
      summary: Update an inference pipeline row
      description: Update a previously published row, for example to attach ground truth.
      parameters:
      - $ref: '#/components/parameters/InferencePipelineId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateRowRequest'
      responses:
        '200':
          description: Row updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Row'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /inference-pipelines/{inferencePipelineId}/rows/{inferenceId}:
    get:
      operationId: retrieveRow
      tags:
      - Inference Pipelines
      summary: Retrieve an inference pipeline row
      parameters:
      - $ref: '#/components/parameters/InferencePipelineId'
      - $ref: '#/components/parameters/InferenceId'
      responses:
        '200':
          description: The requested row.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Row'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteRow
      tags:
      - Inference Pipelines
      summary: Delete an inference pipeline row
      parameters:
      - $ref: '#/components/parameters/InferencePipelineId'
      - $ref: '#/components/parameters/InferenceId'
      responses:
        '204':
          description: Row deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /inference-pipelines/{inferencePipelineId}/results:
    get:
      operationId: listInferencePipelineTestResults
      tags:
      - Inference Pipelines
      summary: List inference pipeline test results
      parameters:
      - $ref: '#/components/parameters/InferencePipelineId'
      - name: status
        in: query
        required: false
        schema:
          type: string
      - name: type
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: A list of test results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestResultList'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    InferencePipeline:
      type: object
      properties:
        id:
          type: string
          format: uuid
        projectId:
          type: string
          format: uuid
          nullable: true
        name:
          type: string
        description:
          type: string
          nullable: true
        dateCreated:
          type: string
          format: date-time
        dateUpdated:
          type: string
          format: date-time
        dateLastSampleReceived:
          type: string
          format: date-time
          nullable: true
        dateLastEvaluated:
          type: string
          format: date-time
          nullable: true
        passingGoalCount:
          type: integer
          nullable: true
        failingGoalCount:
          type: integer
          nullable: true
        totalGoalCount:
          type: integer
          nullable: true
        status:
          type: string
          nullable: true
        statusMessage:
          type: string
          nullable: true
        links:
          type: object
          properties:
            app:
              type: string
      required:
      - id
      - name
    Row:
      type: object
      properties:
        inferenceId:
          type: string
        row:
          type: object
          additionalProperties: true
    InferencePipelineList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/InferencePipeline'
    DataStreamRequest:
      type: object
      properties:
        config:
          $ref: '#/components/schemas/DataStreamConfig'
        rows:
          type: array
          description: The rows of production data being published.
          items:
            type: object
            additionalProperties: true
      required:
      - config
      - rows
    DataStreamResponse:
      type: object
      properties:
        success:
          type: string
          description: Indicates the data was accepted (e.g. "success").
    DataStreamConfig:
      type: object
      description: Maps the columns present in each streamed row to Openlayer concepts. The exact fields depend on the project task type (LLM vs tabular).
      properties:
        inputVariableNames:
          type: array
          items:
            type: string
          description: Names of the columns that are input variables to the model.
        outputColumnName:
          type: string
          nullable: true
          description: Name of the column containing the model output.
        groundTruthColumnName:
          type: string
          nullable: true
          description: Name of the column containing ground truth labels.
        numOfTokenColumnName:
          type: string
          nullable: true
          description: Name of the column containing token counts.
        costColumnName:
          type: string
          nullable: true
          description: Name of the column containing the request cost.
        latencyColumnName:
          type: string
          nullable: true
          description: Name of the column containing latency in milliseconds.
        timestampColumnName:
          type: string
          nullable: true
          description: Name of the column containing the UNIX timestamp.
        inferenceIdColumnName:
          type: string
          nullable: true
          description: Name of the column containing a unique inference id for the row.
        contextColumnName:
          type: string
          nullable: true
          description: Name of the column containing retrieved context (for RAG/LLM tasks).
        questionColumnName:
          type: string
          nullable: true
        prompt:
          type: array
          nullable: true
          items:
            type: object
            properties:
              role:
                type: string
              content:
                type: string
    TestResultList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/TestResult'
    Test:
      type: object
      properties:
        id:
          type: string
          format: uuid
        projectVersionId:
          type: string
          format: uuid
          nullable: true
        name:
          type: string
        description:
          type: string
          nullable: true
        type:
          type: string
          description: The test type (integrity, consistency, performance).
        subtype:
          type: string
          nullable: true
        archived:
          type: boolean
        dateCreated:
          type: string
          format: date-time
        dateUpdated:
          type: string
          format: date-time
        creatorId:
          type: string
          format: uuid
          nullable: true
        usesMlModel:
          type: boolean
          nullable: true
        usesValidationDataset:
          type: boolean
          nullable: true
        usesTrainingDataset:
          type: boolean
          nullable: true
        usesProductionData:
          type: boolean
          nullable: true
        thresholds:
          type: array
          items:
            type: object
            properties:
              measurement:
                type: string
              operator:
                type: string
              value:
                oneOf:
                - type: number
                - type: string
                - type: boolean
                - type: array
                  items: {}
      required:
      - id
      - name
      - type
    TestResult:
      type: object
      properties:
        id:
          type: string
          format: uuid
        projectVersionId:
          type: string
          format: uuid
          nullable: true
        inferencePipelineId:
          type: string
          format: uuid
          nullable: true
        status:
          type: string
          description: Result status, e.g. running, passing, failing, skipped, error.
        statusMessage:
          type: string
          nullable: true
        dateCreated:
          type: string
          format: date-time
        dateUpdated:
          type: string
          format: date-time
        dateDataStarts:
          type: string
          format: date-time
          nullable: true
        dateDataEnds:
          type: string
          format: date-time
          nullable: true
        goal:
          $ref: '#/components/schemas/Test'
        goalId:
          type: string
          format: uuid
          nullable: true
      required:
      - id
      - status
    CreateInferencePipelineRequest:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
      required:
      - name
    UpdateRowRequest:
      type: object
      properties:
        inferenceId:
          type: string
        row:
          type: object
          additionalProperties: true
        config:
          $ref: '#/components/schemas/DataStreamConfig'
      required:
      - inferenceId
      - row
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
      required:
      - message
    UpdateInferencePipelineRequest:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
          nullable: true
        referenceDatasetUri:
          type: string
          nullable: true
  responses:
    Unauthorized:
      description: Authentication failed or the API key is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    ProjectId:
      name: projectId
      in: path
      required: true
      description: The unique identifier of the project.
      schema:
        type: string
        format: uuid
    InferencePipelineId:
      name: inferencePipelineId
      in: path
      required: true
      description: The unique identifier of the inference pipeline.
      schema:
        type: string
        format: uuid
    InferenceId:
      name: inferenceId
      in: path
      required: true
      description: The unique identifier of a streamed inference row.
      schema:
        type: string
  securitySchemes:
    api_key:
      type: http
      scheme: bearer
      bearerFormat: apiKey
      description: Pass your Openlayer API key as a Bearer token in the Authorization header.