> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.toloka.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Import a pipeline into a project

> Send an exported pipeline document containing `name` and `graph`, up to 2 MiB. Returns the new pipeline. Returns 400 for an invalid graph or a reference to a secret missing from the project.



## OpenAPI

````yaml /api-reference/openapi.json post /projects/{projectId}/pipelines/import
openapi: 3.1.0
info:
  description: >-
    Manage projects, datasets, labeling pipelines, and model training. **Beta:**
    endpoints, request and response shapes, and error contracts can change
    without notice or a backward-compatibility promise.
  title: Toloka Platform API
  version: 2.0.0
servers:
  - url: https://platform.toloka.ai/api/v2-beta
security:
  - apiKeyAuth: []
  - scopedTokenAuth: []
tags:
  - description: The authenticated API key owner.
    name: Account
  - description: A project is the container for pipelines, datasets, and files.
    name: Projects
  - description: Rows and typed fields. Field schemas are immutable once created.
    name: Datasets
  - description: Append rows to a dataset from a file.
    name: Dataset uploads
  - description: Read a dataset out as a file.
    name: Dataset exports
  - description: A pipeline is a graph of nodes that processes each dataset item.
    name: Pipelines
  - description: The nodes, connections, fields, and version of a pipeline graph.
    name: Pipeline graph
  - description: Execute a pipeline over a dataset and inspect each item.
    name: Runs
  - description: Per-node checks that a pipeline must pass before deployment.
    name: Checks
  - description: Named credentials available to pipeline code.
    name: Secrets
  - description: Project files available to pipeline code and labeling interfaces.
    name: Files
  - description: >-
      Global, read-only catalog of the models a synthetic generation node can
      use, with their budget bounds.
    name: Generation models
  - description: >-
      Global, read-only catalog of the expert audience: the values a node
      `audience` filter can use.
    name: Audience
  - description: >-
      Project lists of experts a node can take its workforce from with
      `audienceMode: service`. Available only to teams with the audience service
      enabled.
    name: Expert lists
  - description: >-
      Experts banned in a project: they cannot be invited and are removed from
      the work they are in. Available only to teams with expert bans enabled.
    name: Expert ban list
  - description: Global, read-only base model catalog.
    name: Base models
  - description: Project-owned mutable model-training drafts.
    name: Trainings
  - description: Project-owned Models and immutable Model Versions.
    name: Models
  - name: Batch inference
paths:
  /projects/{projectId}/pipelines/import:
    post:
      tags:
        - Pipelines
      summary: Import a pipeline into a project
      description: >-
        Send an exported pipeline document containing `name` and `graph`, up to
        2 MiB. Returns the new pipeline. Returns 400 for an invalid graph or a
        reference to a secret missing from the project.
      operationId: importPipeline
      parameters:
        - in: path
          name: projectId
          required: true
          schema:
            $ref: '#/components/schemas/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: false
              properties:
                graph:
                  $ref: '#/components/schemas/PipelineGraphV1'
                  description: Pipeline graph in version 1 of the public graph format.
                name:
                  description: Name of the pipeline.
                  type: string
              required:
                - name
                - graph
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pipeline'
          description: Pipeline imported
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '400':
          description: >-
            Pipeline graph is too large, invalid, or references secrets missing
            from the project
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '403':
          description: >-
            Trial limit reached. An account that has not completed identity or
            business verification may hold one project and one pipeline, and
            cannot start a run. The body message reads "Your trial allows a
            single pipeline. Verify your account to unlock full access."
            Complete verification in the web app to lift the limit.
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '404':
          description: Project not found
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '429':
          description: Rate limit exceeded
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
      x-codeSamples:
        - label: TypeScript SDK
          lang: typescript
          source: >
            import { createClient } from "@toloka-platform/sdk";


            const client = createClient({
              baseUrl: "https://platform.toloka.ai",
              apiKey: process.env.TOLOKA_API_KEY!,
            });


            const snapshot = await client.pipelines.getGraph({ pipelineId:
            "pl.019a0000-0000-7000-8000-000000000001" });


            const pipeline = await client.pipelines.import({
              projectId: "pp.019a0000-0000-7000-8000-000000000001",
              name: "Imported pipeline",
              graph: snapshot.graph
            });

            console.log(pipeline);
components:
  schemas:
    ProjectId:
      description: Project ID with prefix `pp.`.
      pattern: >-
        ^pp\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      type: string
    PipelineGraphV1:
      additionalProperties: false
      properties:
        connections:
          description: Directed connections between node handles.
          items:
            additionalProperties: false
            description: One directed connection.
            properties:
              from:
                additionalProperties: false
                description: Node and handle at one end of a connection.
                properties:
                  handle:
                    description: Input or output handle identifier on that node.
                    pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
                    type: string
                  node:
                    description: Node identifier from `graph.nodes`.
                    pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
                    type: string
                required:
                  - node
                  - handle
                type: object
              settings:
                additionalProperties: {}
                description: >-
                  Connection settings; use an empty object for a normal
                  connection.
                properties: {}
                type: object
              to:
                additionalProperties: false
                description: Node and handle at one end of a connection.
                properties:
                  handle:
                    description: Input or output handle identifier on that node.
                    pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
                    type: string
                  node:
                    description: Node identifier from `graph.nodes`.
                    pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
                    type: string
                required:
                  - node
                  - handle
                type: object
            required:
              - from
              - to
              - settings
            type: object
          maxItems: 2000
          type: array
        fields:
          description: Fields used by the pipeline, with names and JSON Schemas.
          items:
            additionalProperties: false
            description: One pipeline field.
            properties:
              id:
                description: Caller-defined field identifier, unique within the graph.
                pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
                type: string
              jsonSchema:
                $ref: '#/components/schemas/JsonSchema'
                description: JSON Schema defining the accepted values for a field.
              name:
                description: Dataset field name bound to this pipeline field.
                type: string
            required:
              - id
              - name
              - jsonSchema
            type: object
          maxItems: 500
          type: array
        layout:
          additionalProperties:
            additionalProperties:
              items: false
              maxItems: 2
              minItems: 2
              prefixItems:
                - description: X
                  type: number
                - description: 'Y'
                  type: number
              type: array
            maxProperties: 2
            propertyNames:
              pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
              type: string
            type: object
          description: >-
            Optional node positions for the visual editor, keyed by node ID and
            block group; each position is an [x, y] pair.
          maxProperties: 500
          propertyNames:
            pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
            type: string
          type: object
        nodes:
          description: Nodes that make up the pipeline.
          items:
            description: One pipeline node.
            oneOf:
              - $ref: '#/components/schemas/RootNode'
              - $ref: '#/components/schemas/CodeNode'
              - $ref: '#/components/schemas/GenerationNode'
              - $ref: '#/components/schemas/MatchNode'
              - $ref: '#/components/schemas/QuorumNode'
          maxItems: 500
          type: array
        version:
          const: 1
          description: Graph format version; always 1.
          type: number
      required:
        - version
        - fields
        - nodes
        - connections
      type: object
    Pipeline:
      description: A pipeline within a project.
      properties:
        createdAt:
          description: Time the pipeline was created, as an ISO 8601 timestamp.
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
          type: string
        id:
          $ref: '#/components/schemas/PipelineId'
        name:
          description: Name of the pipeline.
          type: string
        projectId:
          $ref: '#/components/schemas/ProjectId'
        updatedAt:
          description: Time the pipeline was last updated, as an ISO 8601 timestamp.
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
          type: string
        version:
          description: >-
            Pipeline version number; copying a pipeline increments the source
            version.
          type: number
      required:
        - id
        - projectId
        - name
        - version
        - createdAt
        - updatedAt
      type: object
    JsonSchema:
      additionalProperties: false
      description: JSON Schema defining the accepted values for a field.
      properties:
        additionalProperties:
          anyOf:
            - description: >-
                Whether extra object properties are allowed, or the schema they
                must satisfy; omitted means allowed.
              type: boolean
            - $ref: '#/components/schemas/JsonSchema'
              description: >-
                Whether extra object properties are allowed, or the schema they
                must satisfy; omitted means allowed.
          description: >-
            Whether extra object properties are allowed, or the schema they must
            satisfy; omitted means allowed.
        allOf:
          description: Combined schemas; a value must satisfy every schema when supplied.
          items:
            $ref: '#/components/schemas/JsonSchema'
            description: JSON Schema defining the accepted values for a field.
          minItems: 1
          type: array
        anyOf:
          description: >-
            Alternative schemas; a value must satisfy at least one when
            supplied.
          items:
            $ref: '#/components/schemas/JsonSchema'
            description: JSON Schema defining the accepted values for a field.
          minItems: 1
          type: array
        const:
          $ref: '#/components/schemas/JsonValue'
          description: Single required JSON value; omit when no exact value is required.
        default:
          $ref: '#/components/schemas/JsonValue'
          description: Suggested default JSON value; omit when none is specified.
        description:
          description: Optional explanation of the values accepted by this schema.
          type: string
        enum:
          description: >-
            Allowed JSON values; omit to allow any value satisfying the other
            constraints.
          items:
            $ref: '#/components/schemas/JsonValue'
          minItems: 1
          type: array
        examples:
          description: Example JSON values for this schema; omit when none are supplied.
          items:
            $ref: '#/components/schemas/JsonValue'
          type: array
        exclusiveMaximum:
          description: Exclusive upper bound for a number; omit when none is required.
          type: number
        exclusiveMinimum:
          description: Exclusive lower bound for a number; omit when none is required.
          type: number
        format:
          description: >-
            String format, such as `date-time`, `email`, or `uri`; omit when no
            format is required.
          type: string
        items:
          $ref: '#/components/schemas/JsonSchema'
          description: >-
            Schema that every array item must satisfy; omit to leave items
            unrestricted.
        maxItems:
          description: Maximum number of array items; omit for no upper bound.
          maximum: 9007199254740991
          minimum: 0
          type: integer
        maxLength:
          description: >-
            Maximum string length in Unicode characters; omit for no upper
            bound.
          maximum: 9007199254740991
          minimum: 0
          type: integer
        maximum:
          description: Inclusive upper bound for a number; omit for no upper bound.
          type: number
        minItems:
          description: Minimum number of array items; omit for no lower bound.
          maximum: 9007199254740991
          minimum: 0
          type: integer
        minLength:
          description: >-
            Minimum string length in Unicode characters; omit for no lower
            bound.
          maximum: 9007199254740991
          minimum: 0
          type: integer
        minimum:
          description: Inclusive lower bound for a number; omit for no lower bound.
          type: number
        oneOf:
          description: Alternative schemas; a value must satisfy exactly one when supplied.
          items:
            $ref: '#/components/schemas/JsonSchema'
            description: JSON Schema defining the accepted values for a field.
          minItems: 1
          type: array
        pattern:
          description: >-
            Regular expression a string must match; omit for no pattern
            constraint.
          type: string
        properties:
          $ref: '#/components/schemas/JsonSchemaProperties'
          description: Schemas for named object properties; omit when none are specified.
        required:
          description: >-
            Object property names that must be present; omit when none are
            required.
          items:
            type: string
          type: array
        title:
          description: Optional display title for this schema.
          type: string
        type:
          anyOf:
            - description: Accepted JSON type or types; omit to allow any type.
              enum:
                - string
                - number
                - integer
                - boolean
                - object
                - array
                - 'null'
              type: string
            - description: Accepted JSON type or types; omit to allow any type.
              items:
                enum:
                  - string
                  - number
                  - integer
                  - boolean
                  - object
                  - array
                  - 'null'
                type: string
              minItems: 1
              type: array
          description: Accepted JSON type or types; omit to allow any type.
        uniqueItems:
          description: >-
            Whether array items must be unique; omitted means duplicates are
            allowed.
          type: boolean
      type: object
    RootNode:
      additionalProperties: false
      description: One pipeline node.
      properties:
        id:
          description: Caller-defined node identifier, unique within the graph.
          pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
          type: string
        settings:
          $ref: '#/components/schemas/RootNodeSettings'
        type:
          const: root
          description: >-
            Node type: `root` supplies Start and End, `code` runs Python,
            `generation` creates answers, `match` routes items, and `quorum`
            combines expert answers.
          type: string
      required:
        - id
        - type
        - settings
      type: object
    CodeNode:
      additionalProperties: false
      description: One pipeline node.
      properties:
        id:
          description: Caller-defined node identifier, unique within the graph.
          pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
          type: string
        settings:
          $ref: '#/components/schemas/CodeNodeSettings'
        type:
          const: code
          description: >-
            Node type: `root` supplies Start and End, `code` runs Python,
            `generation` creates answers, `match` routes items, and `quorum`
            combines expert answers.
          type: string
      required:
        - id
        - type
        - settings
      type: object
    GenerationNode:
      additionalProperties: false
      description: One pipeline node.
      properties:
        id:
          description: Caller-defined node identifier, unique within the graph.
          pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
          type: string
        settings:
          $ref: '#/components/schemas/GenerationNodeSettings'
        type:
          const: generation
          description: >-
            Node type: `root` supplies Start and End, `code` runs Python,
            `generation` creates answers, `match` routes items, and `quorum`
            combines expert answers.
          type: string
      required:
        - id
        - type
        - settings
      type: object
    MatchNode:
      additionalProperties: false
      description: One pipeline node.
      properties:
        id:
          description: Caller-defined node identifier, unique within the graph.
          pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
          type: string
        settings:
          $ref: '#/components/schemas/MatchNodeSettings'
        type:
          const: match
          description: >-
            Node type: `root` supplies Start and End, `code` runs Python,
            `generation` creates answers, `match` routes items, and `quorum`
            combines expert answers.
          type: string
      required:
        - id
        - type
        - settings
      type: object
    QuorumNode:
      additionalProperties: false
      description: One pipeline node.
      properties:
        id:
          description: Caller-defined node identifier, unique within the graph.
          pattern: ^(?!(?:__proto__|constructor|prototype)$).+$
          type: string
        settings:
          $ref: '#/components/schemas/QuorumNodeSettings'
        type:
          const: quorum
          description: >-
            Node type: `root` supplies Start and End, `code` runs Python,
            `generation` creates answers, `match` routes items, and `quorum`
            combines expert answers.
          type: string
      required:
        - id
        - type
        - settings
      type: object
    PipelineId:
      description: Pipeline ID with prefix `pl.`.
      pattern: >-
        ^pl\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      type: string
    JsonValue:
      anyOf:
        - type: string
        - type: number
        - type: boolean
        - type: 'null'
        - items:
            $ref: '#/components/schemas/JsonValue'
          type: array
        - additionalProperties:
            $ref: '#/components/schemas/JsonValue'
          propertyNames:
            type: string
          type: object
    JsonSchemaProperties:
      additionalProperties:
        $ref: '#/components/schemas/JsonSchema'
      propertyNames:
        type: string
      type: object
    RootNodeSettings:
      additionalProperties: false
      description: Configuration for this node type.
      properties:
        completedFieldProxies:
          description: Fields collected by the End node.
          properties:
            input:
              description: Fields written at the pipeline output.
              items:
                additionalProperties: false
                description: Field binding.
                properties:
                  id:
                    description: Field identifier from `graph.fields`.
                    type: string
                  optional:
                    description: Whether this field may be absent when the node executes.
                    type: boolean
                required:
                  - id
                  - optional
                type: object
              type: array
          required:
            - input
          type: object
        datasetId:
          description: >-
            Attached dataset ID with prefix `ds.`; absent before a dataset is
            attached.
          pattern: >-
            ^ds\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        itemFilter:
          additionalProperties: false
          description: >-
            Conditions selecting dataset rows; omitted conditions do not
            restrict the selection.
          properties:
            createdBefore:
              description: >-
                Cutoff for dataset items and field revisions, as an ISO 8601
                timestamp; omit to use the endpoint's cutoff.
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
              type: string
            excludeParts:
              $ref: '#/components/schemas/DatasetSplitPartExclusions'
            fieldSources:
              $ref: '#/components/schemas/DatasetFieldSourceConditions'
            fieldValues:
              $ref: '#/components/schemas/DatasetFieldValueConditions'
            missingRevisionFields:
              description: >-
                Field IDs with prefix `df.` that must have no revision on a
                selected row; defaults to an empty array.
              items:
                pattern: >-
                  ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
                type: string
              type: array
            parts:
              $ref: '#/components/schemas/DatasetSplitPartInclusion'
            slice:
              $ref: '#/components/schemas/DatasetSliceSelection'
          type: object
        itemLimit:
          description: >-
            Maximum number of matching items to process; omit to process every
            matching item.
          exclusiveMinimum: 0
          maximum: 9007199254740991
          type: integer
        startedFieldProxies:
          description: Fields supplied by the Start node.
          properties:
            output:
              description: Dataset fields read at the pipeline input.
              items:
                additionalProperties: false
                description: Field binding.
                properties:
                  id:
                    description: Field identifier from `graph.fields`.
                    type: string
                  optional:
                    description: Whether this field may be absent when the node executes.
                    type: boolean
                required:
                  - id
                  - optional
                type: object
              type: array
          required:
            - output
          type: object
      required:
        - startedFieldProxies
        - completedFieldProxies
      type: object
    CodeNodeSettings:
      additionalProperties: false
      description: Configuration for this node type.
      properties:
        about:
          $ref: '#/components/schemas/NodeAbout'
        checks:
          additionalProperties:
            $ref: '#/components/schemas/CheckTestCases'
          description: >-
            Configured test inputs grouped by check type; absent when no tests
            are configured.
          propertyNames:
            enum:
              - code
            type: string
          type: object
        code:
          additionalProperties: false
          description: Code executed by this node.
          properties:
            code:
              description: Python source code for the node.
              type: string
          required:
            - code
          type: object
        envVars:
          default: []
          description: >-
            Environment variables available to the node code; defaults to an
            empty array.
          items:
            description: One environment variable for node code.
            oneOf:
              - additionalProperties: false
                description: One environment variable for node code.
                properties:
                  name:
                    description: Environment variable name available to the node code.
                    type: string
                  type:
                    const: static
                    description: >-
                      Value source: `static` uses the supplied value; `secret`
                      reads a named project secret.
                    type: string
                  value:
                    description: Literal value for a static environment variable.
                    type: string
                required:
                  - type
                  - name
                  - value
                type: object
              - additionalProperties: false
                description: One environment variable for node code.
                properties:
                  name:
                    description: Environment variable name available to the node code.
                    type: string
                  secretName:
                    description: >-
                      Name of the project secret supplying this environment
                      variable.
                    type: string
                  type:
                    const: secret
                    description: >-
                      Value source: `static` uses the supplied value; `secret`
                      reads a named project secret.
                    type: string
                required:
                  - type
                  - name
                  - secretName
                type: object
          type: array
        fieldProxies:
          description: Input and output field bindings for the node.
          properties:
            input:
              description: Fields available to this node as input.
              items:
                additionalProperties: false
                description: Field binding.
                properties:
                  id:
                    description: Field identifier from `graph.fields`.
                    type: string
                  optional:
                    description: Whether this field may be absent when the node executes.
                    type: boolean
                required:
                  - id
                  - optional
                type: object
              type: array
            output:
              description: Fields this node produces.
              items:
                additionalProperties: false
                description: Field binding.
                properties:
                  id:
                    description: Field identifier from `graph.fields`.
                    type: string
                  optional:
                    description: Whether this field may be absent when the node executes.
                    type: boolean
                required:
                  - id
                  - optional
                type: object
              type: array
          required:
            - input
            - output
          type: object
      required:
        - about
        - fieldProxies
        - code
      type: object
    GenerationNodeSettings:
      additionalProperties: false
      description: Configuration for this node type.
      properties:
        about:
          $ref: '#/components/schemas/NodeAbout'
        audienceAndPricing:
          description: Who completes tasks and how attempts are priced.
          oneOf:
            - $ref: '#/components/schemas/HumanAudienceAndPricing'
            - additionalProperties: false
              description: Who completes tasks and how attempts are priced.
              properties:
                audienceType:
                  const: synthetic
                  description: >-
                    Task performer: `human` for experts or `synthetic` for
                    model-generated answers.
                  type: string
                generationModelId:
                  default: gpt-5.6-terra
                  description: Generation model ID from the generation-models endpoint.
                  enum:
                    - gpt-5.4
                    - gpt-5.4-mini
                    - claude-sonnet-4-6
                    - gemini-3.1-pro-preview
                    - gemini-3.5-flash
                    - gemini-3.7-flash
                    - claude-sonnet-5
                    - claude-opus-5
                    - claude-fable-5
                    - gpt-5.6-terra
                    - gpt-5.6-luna
                    - gpt-5.6-sol
                  type: string
                llmInstruction:
                  default: ''
                  description: >-
                    Instruction supplied to the generation model; defaults to an
                    empty string.
                  type: string
                maxCostPerAttempt:
                  description: Maximum spend for one generation attempt, in US dollars.
                  type: number
                reasoningEffort:
                  description: >-
                    Reasoning effort for models that support it; omit to use the
                    model default.
                  enum:
                    - low
                    - medium
                    - high
                  type: string
              required:
                - audienceType
                - maxCostPerAttempt
              type: object
        audienceMode:
          description: >-
            How the node finds experts. `legacy`: audience filters and smart
            search. `service`: the audience service, which can also take experts
            from an expert list. Only teams with the audience service enabled
            can use `service`. Omitted when `legacy`.
          enum:
            - legacy
            - service
          type: string
        checks:
          additionalProperties:
            $ref: '#/components/schemas/CheckTestCases'
          description: >-
            Configured test inputs grouped by check type; absent when no tests
            are configured.
          propertyNames:
            enum:
              - ui
              - llmqa
              - annotation_qa
              - qc_lint
              - ui_types_lint
              - exam_dataset
              - synthgen
            type: string
          type: object
        entities:
          $ref: '#/components/schemas/TaskEntities'
        exam:
          $ref: '#/components/schemas/QualificationExam'
        instruction:
          description: Task instructions shown to experts.
          type: string
        onboarding:
          $ref: '#/components/schemas/Onboarding'
        publicName:
          description: Task name shown to experts.
          type: string
        qualityAssurance:
          description: How answers are checked for quality.
          oneOf:
            - description: How answers are checked for quality.
              properties:
                llmQaModelId:
                  default: gpt-5.6-terra
                  description: Model identifier for LLM quality checks.
                  enum:
                    - gpt-5.6-terra
                    - gpt-5.6-luna
                    - gpt-5.4
                    - gpt-5.4-mini
                    - gpt-5
                    - gpt-5-mini
                    - claude-sonnet-4-6
                  type: string
                qaMode:
                  const: llm_only
                  description: >-
                    Review mode: `llm_only` uses LLM checks, `human_only` uses
                    human review, and `hybrid` combines them.
                  type: string
              required:
                - qaMode
              type: object
            - additionalProperties: false
              description: How answers are checked for quality.
              properties:
                expertListId:
                  anyOf:
                    - pattern: >-
                        ^exl\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
                      type: string
                    - type: 'null'
                  description: >-
                    Expert list the experts come from, with prefix `exl.`.
                    Requires `audienceMode: service`. `null` detaches the list.
                    Omitted when no list is attached.
                humanQaTimeForTask:
                  description: >-
                    Expected human review time per task in seconds; absent when
                    not specified.
                  exclusiveMinimum: 0
                  type: number
                qaMode:
                  const: human_only
                  description: >-
                    Review mode: `llm_only` uses LLM checks, `human_only` uses
                    human review, and `hybrid` combines them.
                  type: string
                smartSamplingPercent:
                  default: 100
                  description: >-
                    Percentage of answers sampled for human review, from 10 to
                    100; defaults to 100 for human-only review and 30 for hybrid
                    review.
                  maximum: 100
                  minimum: 10
                  type: number
              required:
                - qaMode
              type: object
            - additionalProperties: false
              description: How answers are checked for quality.
              properties:
                expertListId:
                  anyOf:
                    - pattern: >-
                        ^exl\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
                      type: string
                    - type: 'null'
                  description: >-
                    Expert list the experts come from, with prefix `exl.`.
                    Requires `audienceMode: service`. `null` detaches the list.
                    Omitted when no list is attached.
                humanQaTimeForTask:
                  description: >-
                    Expected human review time per task in seconds; absent when
                    not specified.
                  exclusiveMinimum: 0
                  type: number
                llmQaModelId:
                  default: gpt-5.6-terra
                  description: Model identifier for LLM quality checks.
                  enum:
                    - gpt-5.6-terra
                    - gpt-5.6-luna
                    - gpt-5.4
                    - gpt-5.4-mini
                    - gpt-5
                    - gpt-5-mini
                    - claude-sonnet-4-6
                  type: string
                qaMode:
                  const: hybrid
                  description: >-
                    Review mode: `llm_only` uses LLM checks, `human_only` uses
                    human review, and `hybrid` combines them.
                  type: string
                smartSamplingPercent:
                  default: 30
                  description: >-
                    Percentage of answers sampled for human review, from 10 to
                    100; defaults to 100 for human-only review and 30 for hybrid
                    review.
                  maximum: 100
                  minimum: 10
                  type: number
              required:
                - qaMode
              type: object
        qualityCriteria:
          $ref: '#/components/schemas/QualityCriteria'
        reuseAudienceWithNodeId:
          anyOf:
            - additionalProperties: false
              description: >-
                Node whose expert audience is reused, or null when no audience
                is reused.
              properties:
                nodeId:
                  description: Node ID whose qualified experts are reused.
                  type: string
                pipelineId:
                  description: >-
                    Pipeline ID with prefix `pl.` containing the source
                    audience.
                  pattern: >-
                    ^pl\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
                  type: string
              required:
                - pipelineId
                - nodeId
              type: object
            - description: >-
                Node whose expert audience is reused, or null when no audience
                is reused.
              type: 'null'
          description: >-
            Node whose expert audience is reused, or null when no audience is
            reused.
        smartSearch:
          $ref: '#/components/schemas/SmartSearch'
        ui:
          $ref: '#/components/schemas/LabelingInterface'
      required:
        - about
        - publicName
        - entities
        - qualityCriteria
        - instruction
        - ui
        - onboarding
      type: object
    MatchNodeSettings:
      additionalProperties: false
      description: Configuration for this node type.
      properties:
        about:
          $ref: '#/components/schemas/NodeAbout'
        conditions:
          description: Routing conditions evaluated in order.
          items:
            additionalProperties: false
            description: One routing condition.
            properties:
              logic:
                default: and
                description: >-
                  How predicates combine: `and` requires all to match; `or`
                  requires at least one; defaults to `and`.
                enum:
                  - and
                  - or
                type: string
              name:
                description: Display name of the condition.
                type: string
              predicates:
                description: Predicates used by this routing condition.
                items:
                  additionalProperties: false
                  description: Condition applied to a field value.
                  properties:
                    fieldProxyId:
                      description: Identifier of the field whose value is compared.
                      type: string
                    jsonPath:
                      description: JSONPath locating the value within the field.
                      type: string
                    operator:
                      description: >-
                        Text comparison: `text_eq` for equality or `text_neq`
                        for inequality.
                      enum:
                        - text_eq
                        - text_neq
                      type: string
                    value:
                      description: >-
                        Scalar value compared as text; null is treated as an
                        empty string.
                      type:
                        - string
                        - number
                        - boolean
                        - 'null'
                  required:
                    - fieldProxyId
                    - jsonPath
                    - operator
                    - value
                  type: object
                type: array
            required:
              - name
              - predicates
            type: object
          type: array
        fieldProxies:
          description: Input and output field bindings for the node.
          properties:
            input:
              description: Fields available to this node as input.
              items:
                additionalProperties: false
                description: Field binding.
                properties:
                  id:
                    description: Field identifier from `graph.fields`.
                    type: string
                  optional:
                    description: Whether this field may be absent when the node executes.
                    type: boolean
                required:
                  - id
                  - optional
                type: object
              type: array
          required:
            - input
          type: object
      required:
        - about
        - conditions
        - fieldProxies
      type: object
    QuorumNodeSettings:
      additionalProperties: false
      description: Configuration for this node type.
      properties:
        about:
          $ref: '#/components/schemas/NodeAbout'
        audienceAndPricing:
          $ref: '#/components/schemas/HumanAudienceAndPricing'
        audienceMode:
          description: >-
            How the node finds experts. `legacy`: audience filters and smart
            search. `service`: the audience service, which can also take experts
            from an expert list. Only teams with the audience service enabled
            can use `service`. Omitted when `legacy`.
          enum:
            - legacy
            - service
          type: string
        checks:
          additionalProperties:
            $ref: '#/components/schemas/CheckTestCases'
          description: >-
            Configured test inputs grouped by check type; absent when no tests
            are configured.
          propertyNames:
            enum:
              - ui
              - llmqa
              - annotation_qa
              - qc_lint
              - ui_types_lint
              - exam_dataset
            type: string
          type: object
        entities:
          $ref: '#/components/schemas/TaskEntities'
        exam:
          $ref: '#/components/schemas/QualificationExam'
        instruction:
          description: Task instructions shown to experts.
          type: string
        offboardingRules:
          default: []
          description: >-
            Rules for excluding experts based on answer quality; defaults to an
            empty array.
          items:
            additionalProperties: false
            description: One expert-exclusion rule.
            properties:
              agreementScale:
                description: >-
                  Field used to measure agreement; absent when no field is
                  selected.
                type: string
              id:
                description: Identifier of the rule, formatted as a UUID.
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                type: string
              type:
                description: >-
                  Rule type: `mv_agreement` checks agreement with the majority
                  answer; absent for an unspecified rule.
                enum:
                  - mv_agreement
                type: string
            required:
              - id
            type: object
          type: array
        onboarding:
          $ref: '#/components/schemas/Onboarding'
        overlap:
          description: Configured number of independent expert answers per item.
          maximum: 100
          minimum: 1
          type: integer
        publicName:
          description: Task name shown to experts.
          type: string
        qualityAssurance:
          default:
            llmQaModelId: gpt-5.6-terra
            qaMode: llm_only
          description: How answers are checked for quality.
          oneOf:
            - description: How answers are checked for quality.
              properties:
                llmQaModelId:
                  default: gpt-5.6-terra
                  description: Model identifier for LLM quality checks.
                  enum:
                    - gpt-5.6-terra
                    - gpt-5.6-luna
                    - gpt-5.4
                    - gpt-5.4-mini
                    - gpt-5
                    - gpt-5-mini
                    - claude-sonnet-4-6
                  type: string
                qaMode:
                  const: llm_only
                  description: >-
                    Review mode: `llm_only` uses LLM checks, `human_only` uses
                    human review, and `hybrid` combines them.
                  type: string
              required:
                - qaMode
              type: object
            - description: How answers are checked for quality.
              properties:
                qaMode:
                  const: none
                  description: >-
                    Review mode: `llm_only` uses LLM checks, `human_only` uses
                    human review, and `hybrid` combines them.
                  type: string
              required:
                - qaMode
              type: object
        qualityCriteria:
          $ref: '#/components/schemas/QualityCriteria'
        reuseAudienceWithNodeId:
          anyOf:
            - additionalProperties: false
              description: >-
                Node whose expert audience is reused, or null when no audience
                is reused.
              properties:
                nodeId:
                  description: Node ID whose qualified experts are reused.
                  type: string
                pipelineId:
                  description: >-
                    Pipeline ID with prefix `pl.` containing the source
                    audience.
                  pattern: >-
                    ^pl\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
                  type: string
              required:
                - pipelineId
                - nodeId
              type: object
            - description: >-
                Node whose expert audience is reused, or null when no audience
                is reused.
              type: 'null'
          description: >-
            Node whose expert audience is reused, or null when no audience is
            reused.
        smartSearch:
          $ref: '#/components/schemas/SmartSearch'
        ui:
          $ref: '#/components/schemas/LabelingInterface'
      required:
        - about
        - publicName
        - entities
        - qualityCriteria
        - instruction
        - ui
        - overlap
        - onboarding
      type: object
    DatasetSplitPartExclusions:
      description: Split-part selections to exclude; omit when no parts should be excluded.
      items:
        additionalProperties: false
        description: Split field and selected part names.
        properties:
          fieldId:
            description: Split field ID with prefix `df.`.
            pattern: >-
              ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
            type: string
          names:
            description: Names of the split parts to select.
            items:
              maxLength: 64
              pattern: ^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)*$
              type: string
            maxItems: 10
            minItems: 1
            type: array
        required:
          - fieldId
          - names
        type: object
      maxItems: 500
      type: array
    DatasetFieldSourceConditions:
      description: >-
        Field-author conditions that selected rows must satisfy; defaults to no
        conditions.
      items:
        additionalProperties: false
        description: Required authors for a field.
        properties:
          fieldId:
            description: Dataset field ID with prefix `df.`.
            pattern: >-
              ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
            type: string
          sources:
            description: Revision authors to match for this field.
            items:
              $ref: '#/components/schemas/FieldRevisionSource'
            minItems: 1
            type: array
        required:
          - fieldId
          - sources
        type: object
      type: array
    DatasetFieldValueConditions:
      description: >-
        Field-value conditions that selected rows must satisfy; defaults to no
        conditions.
      items:
        additionalProperties: false
        description: Condition applied to a field value.
        properties:
          fieldId:
            description: Dataset field ID with prefix `df.` to compare.
            pattern: >-
              ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
            type: string
          jsonPath:
            description: JSONPath locating the value within the field.
            minLength: 1
            type: string
          latestOnly:
            default: true
            description: >-
              Whether to test only the latest revision from the allowed authors;
              false tests any revision, and the default is true.
            type: boolean
          operator:
            description: >-
              Text comparison: `text_eq` for equality or `text_neq` for
              inequality.
            enum:
              - text_eq
              - text_neq
            type: string
          sources:
            default: []
            description: Allowed revision authors; an empty array allows any author.
            items:
              $ref: '#/components/schemas/FieldRevisionSource'
            type: array
          value:
            description: Scalar value compared as text; null is treated as an empty string.
            type:
              - string
              - number
              - boolean
              - 'null'
        required:
          - jsonPath
          - operator
          - value
          - fieldId
        type: object
      type: array
    DatasetSplitPartInclusion:
      additionalProperties: false
      description: Split parts to include; omit to include every part.
      properties:
        fieldId:
          description: Split field ID with prefix `df.`.
          pattern: >-
            ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        names:
          description: Names of the split parts to select.
          items:
            maxLength: 64
            pattern: ^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)*$
            type: string
          maxItems: 10
          minItems: 1
          type: array
      required:
        - fieldId
        - names
      type: object
    DatasetSliceSelection:
      additionalProperties: false
      description: >-
        Slice whose frozen rows and fields to read; omit to use live dataset
        rows.
      properties:
        sliceId:
          description: Dataset slice ID with prefix `dsl.`.
          pattern: >-
            ^dsl\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
      required:
        - sliceId
      type: object
    NodeAbout:
      additionalProperties: false
      description: Node name and task context.
      properties:
        description:
          description: Optional explanation of the node's purpose.
          type: string
        name:
          description: Display name of the node.
          type: string
        projectType:
          description: >-
            Task type: `general` for labeling existing data or `data_collection`
            for collecting new data; absent when unspecified.
          enum:
            - general
            - data_collection
          type: string
      required:
        - name
      type: object
    CheckTestCases:
      description: Test cases for this check type.
      items:
        description: One configured check case.
        properties:
          id:
            description: Identifier of the check case.
            type: string
          input:
            anyOf:
              - description: >-
                  Check input as JSON text, or JSON values encoded as strings
                  and keyed by field ID.
                type: string
              - additionalProperties:
                  type: string
                description: >-
                  Check input as JSON text, or JSON values encoded as strings
                  and keyed by field ID.
                propertyNames:
                  type: string
                type: object
            description: >-
              Check input as JSON text, or JSON values encoded as strings and
              keyed by field ID.
          name:
            description: Display name of the check case.
            type: string
        required:
          - id
          - name
          - input
        type: object
      type: array
    HumanAudienceAndPricing:
      additionalProperties: false
      description: Who completes tasks and how attempts are priced.
      properties:
        audience:
          additionalProperties: false
          description: Expert eligibility filters.
          properties:
            countries:
              additionalProperties: false
              description: Eligible expert countries.
              properties:
                type:
                  description: >-
                    Matching rule; `or` accepts experts from any selected
                    country.
                  enum:
                    - or
                  type: string
                values:
                  description: >-
                    Country identifiers to include; an empty array applies no
                    country restriction.
                  items:
                    type: string
                  type: array
              required:
                - type
                - values
              type: object
            languages:
              additionalProperties: false
              description: Required expert languages.
              properties:
                type:
                  description: >-
                    Matching rule: `and` requires all selected languages; `or`
                    requires at least one.
                  enum:
                    - or
                    - and
                  type: string
                values:
                  description: >-
                    Languages to match; an empty array applies no language
                    restriction.
                  items:
                    description: Selected expert language.
                    properties:
                      value:
                        description: Language identifier used by the audience filter.
                        type: string
                    required:
                      - value
                    type: object
                  type: array
              required:
                - type
                - values
              type: object
            specializations:
              additionalProperties: false
              description: Required expert specializations.
              properties:
                type:
                  description: >-
                    Matching rule: `and` requires all selected specializations;
                    `or` requires at least one.
                  enum:
                    - or
                    - and
                  type: string
                values:
                  description: >-
                    Specializations to match; an empty array applies no
                    specialization restriction.
                  items:
                    additionalProperties: false
                    description: Selected expert specialization.
                    properties:
                      qualificationId:
                        description: Qualification ID returned with the specialization.
                        type: string
                      value:
                        description: >-
                          Specialization name returned by the specializations
                          endpoint.
                        type: string
                    required:
                      - value
                      - qualificationId
                    type: object
                  type: array
              required:
                - type
                - values
              type: object
          required:
            - languages
            - specializations
            - countries
          type: object
        audienceType:
          const: human
          description: >-
            Task performer: `human` for experts or `synthetic` for
            model-generated answers.
          type: string
        expertListId:
          anyOf:
            - pattern: >-
                ^exl\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
              type: string
            - type: 'null'
          description: >-
            Expert list the experts come from, with prefix `exl.`. Requires
            `audienceMode: service`. `null` detaches the list. Omitted when no
            list is attached.
        perExpertCapEnabled:
          default: false
          description: >-
            Whether to limit how many tasks each expert may submit; defaults to
            false.
          type: boolean
        perExpertCapValue:
          default: 1
          description: >-
            Maximum tasks per expert when the cap is enabled, from 1 to 50;
            defaults to 1.
          exclusiveMinimum: 0
          maximum: 50
          type: integer
        pricePerTask:
          description: Price per expert task in US dollars.
          type: number
        timeForTask:
          description: Expected task completion time in seconds.
          type: number
        verifiedExperts:
          description: Whether experts must have verified identities.
          type: boolean
      required:
        - verifiedExperts
        - audience
        - pricePerTask
        - timeForTask
        - audienceType
      type: object
    TaskEntities:
      additionalProperties: false
      description: Task input and output entities.
      properties:
        input:
          description: Entities supplied as task input.
          items:
            $ref: '#/components/schemas/TaskEntity'
          type: array
        output:
          description: Entities the expert or model must produce.
          items:
            $ref: '#/components/schemas/TaskEntity'
          type: array
      required:
        - input
        - output
      type: object
    QualificationExam:
      additionalProperties: false
      description: >-
        Qualification exam settings; omitted settings use a disabled one-task
        exam.
      properties:
        enabled:
          description: Whether experts must pass an exam before receiving regular tasks.
          type: boolean
        goldenDatasetId:
          description: >-
            Dataset ID with prefix `ds.` containing reference answers; absent
            when no reference dataset is selected.
          pattern: >-
            ^ds\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        gradedEntities:
          description: Entities and grading rules used in the exam.
          items:
            additionalProperties: false
            description: Grading rule for one entity.
            properties:
              customInstruction:
                description: Instruction for custom reference-answer comparison.
                type: string
              disabledCriterionIds:
                description: UUIDs of quality criteria excluded from exam grading.
                items:
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                  type: string
                type: array
              groundTruthType:
                description: >-
                  Reference comparison: `direct` compares values directly;
                  `custom` uses the supplied instruction.
                enum:
                  - direct
                  - custom
                type: string
              mode:
                description: >-
                  Grading mode: `ground_truth` compares with reference answers,
                  `quality_criteria` applies quality requirements, and
                  `not_graded` excludes the entity from grading.
                enum:
                  - ground_truth
                  - quality_criteria
                  - not_graded
                type: string
              targetEntity:
                description: Field identifier of the entity being graded.
                type: string
            required:
              - targetEntity
              - mode
              - groundTruthType
              - customInstruction
              - disabledCriterionIds
            type: object
          type: array
        passThreshold:
          description: Minimum number of exam tasks an expert must pass.
          maximum: 9007199254740991
          minimum: 0
          type: integer
        tasksPerExpert:
          description: Number of exam tasks each expert receives.
          maximum: 9007199254740991
          minimum: 1
          type: integer
      required:
        - enabled
        - gradedEntities
        - tasksPerExpert
        - passThreshold
      type: object
    Onboarding:
      description: Preparation content experts complete before working on tasks.
      properties:
        enabled:
          description: Whether experts must complete onboarding.
          type: boolean
        info:
          description: Overview of the task for experts.
          properties:
            estimatedTime:
              description: Estimated completion time as display text.
              type: string
            goal:
              description: Goal of the task.
              type: string
            role:
              description: Role the expert takes in the task.
              type: string
            successCriteria:
              description: Requirements for completing the task successfully.
              type: string
          required:
            - estimatedTime
            - role
            - goal
            - successCriteria
          type: object
        steps:
          description: Onboarding steps in display order.
          items:
            description: One onboarding step.
            properties:
              blocks:
                description: >-
                  Content blocks in this step; absent when the step has no
                  blocks.
                items:
                  description: One onboarding content block.
                  oneOf:
                    - description: One onboarding content block.
                      properties:
                        estimatedTime:
                          description: Estimated completion time as display text.
                          type: string
                        goal:
                          description: Goal of the task.
                          type: string
                        id:
                          description: Identifier of the onboarding block.
                          type: string
                        role:
                          description: Role the expert takes in the task.
                          type: string
                        successCriteria:
                          description: Requirements for completing the task successfully.
                          type: string
                        type:
                          const: info
                          description: >-
                            Block kind: `info`, `text`, `consent`, `quiz`,
                            `practice`, or interactive `examples`.
                          type: string
                      required:
                        - id
                        - type
                        - estimatedTime
                        - role
                        - goal
                        - successCriteria
                      type: object
                    - description: One onboarding content block.
                      properties:
                        content:
                          description: >-
                            Markdown content for this block; absent when no
                            content is supplied.
                          items:
                            description: Markdown content fragment.
                            properties:
                              type:
                                const: markdown
                                description: Content format; always `markdown`.
                                type: string
                              value:
                                description: Markdown text to display.
                                type: string
                            required:
                              - type
                              - value
                            type: object
                          type: array
                        id:
                          description: Identifier of the onboarding block.
                          type: string
                        title:
                          description: Optional heading for the block.
                          type: string
                        type:
                          const: text
                          description: >-
                            Block kind: `info`, `text`, `consent`, `quiz`,
                            `practice`, or interactive `examples`.
                          type: string
                      required:
                        - id
                        - type
                      type: object
                    - description: One onboarding content block.
                      properties:
                        content:
                          description: >-
                            Markdown content for this block; absent when no
                            content is supplied.
                          items:
                            description: Markdown content fragment.
                            properties:
                              type:
                                const: markdown
                                description: Content format; always `markdown`.
                                type: string
                              value:
                                description: Markdown text to display.
                                type: string
                            required:
                              - type
                              - value
                            type: object
                          type: array
                        id:
                          description: Identifier of the onboarding block.
                          type: string
                        questions:
                          description: Questions in this quiz block.
                          items:
                            description: Question used to check an expert's understanding.
                            properties:
                              correctAnswer:
                                anyOf:
                                  - description: >-
                                      Correct option value, or an array of
                                      correct values for a multiple-choice
                                      question.
                                    type: string
                                  - description: >-
                                      Correct option value, or an array of
                                      correct values for a multiple-choice
                                      question.
                                    items:
                                      type: string
                                    type: array
                                description: >-
                                  Correct option value, or an array of correct
                                  values for a multiple-choice question.
                              correctAnswerFeedback:
                                description: >-
                                  Feedback shown for a correct answer; absent
                                  when none is configured.
                                type: string
                              hint:
                                description: Optional hint shown with the question.
                                type: string
                              id:
                                description: Identifier of the quiz question.
                                type: string
                              incorrectAnswerFeedback:
                                description: >-
                                  Feedback shown for an incorrect answer; absent
                                  when none is configured.
                                type: string
                              options:
                                description: Answer choices shown to the expert.
                                items:
                                  description: One answer choice.
                                  properties:
                                    label:
                                      description: Text displayed for the answer choice.
                                      type: string
                                    value:
                                      description: Value identifying the answer choice.
                                      type: string
                                  required:
                                    - value
                                    - label
                                  type: object
                                type: array
                              question:
                                description: Question text shown to the expert.
                                type: string
                              title:
                                description: Optional title displayed above the question.
                                type: string
                              type:
                                description: >-
                                  Question type: `single-choice` accepts one
                                  option; `multiple-choice` accepts several.
                                enum:
                                  - single-choice
                                  - multiple-choice
                                type: string
                            required:
                              - id
                              - type
                              - question
                              - options
                              - correctAnswer
                            type: object
                          type: array
                        title:
                          description: Optional heading for the block.
                          type: string
                        type:
                          const: quiz
                          description: >-
                            Block kind: `info`, `text`, `consent`, `quiz`,
                            `practice`, or interactive `examples`.
                          type: string
                      required:
                        - id
                        - type
                        - questions
                      type: object
                    - description: One onboarding content block.
                      properties:
                        content:
                          description: >-
                            Markdown content for this block; absent when no
                            content is supplied.
                          items:
                            description: Markdown content fragment.
                            properties:
                              type:
                                const: markdown
                                description: Content format; always `markdown`.
                                type: string
                              value:
                                description: Markdown text to display.
                                type: string
                            required:
                              - type
                              - value
                            type: object
                          type: array
                        editorConfig:
                          description: Optional settings for the practice-answer editor.
                          properties:
                            language:
                              description: >-
                                Editor language identifier; absent when no
                                language is selected.
                              type: string
                            placeholder:
                              description: >-
                                Placeholder text shown in an empty editor;
                                absent when none is configured.
                              type: string
                            rows:
                              description: >-
                                Number of visible editor rows; absent to use the
                                editor default.
                              type: number
                          type: object
                        editorType:
                          description: Optional practice-answer editor type.
                          type: string
                        id:
                          description: Identifier of the onboarding block.
                          type: string
                        imageUrl:
                          description: >-
                            Optional image URL illustrating the practice
                            exercise.
                          type: string
                        title:
                          description: Optional heading for the block.
                          type: string
                        type:
                          const: practice
                          description: >-
                            Block kind: `info`, `text`, `consent`, `quiz`,
                            `practice`, or interactive `examples`.
                          type: string
                        validators:
                          description: >-
                            Practice-answer validation rules; absent when none
                            are configured.
                          items:
                            description: One practice-answer validation rule.
                            properties:
                              criteria:
                                description: Conditions the practice answer must meet.
                                type: string
                              description:
                                description: Explanation of what this rule checks.
                                type: string
                              id:
                                description: Identifier of this validation rule.
                                type: string
                              name:
                                description: Display name of the validation rule.
                                type: string
                            required:
                              - id
                              - name
                              - description
                              - criteria
                            type: object
                          type: array
                      required:
                        - id
                        - type
                      type: object
                    - description: One onboarding content block.
                      properties:
                        examples:
                          description: Interactive examples in this block.
                          items:
                            description: Interactive example shown during onboarding.
                            properties:
                              checks:
                                description: >-
                                  Checks that evaluate the expert's answer to
                                  this example.
                                items:
                                  description: Check used to grade an onboarding example.
                                  oneOf:
                                    - description: >-
                                        Check used to grade an onboarding
                                        example.
                                      properties:
                                        golden:
                                          $ref: '#/components/schemas/JsonValue'
                                          description: >-
                                            Expected JSON value for an exact check;
                                            null is a valid expected value.
                                        hint:
                                          description: >-
                                            Hint explaining how to satisfy the
                                            check.
                                          type: string
                                        path:
                                          description: Path to the answer value to check.
                                          type: string
                                        type:
                                          const: exact
                                          description: >-
                                            Check type: `exact` compares an expected
                                            value, `code` runs a validation
                                            function, and `llm` assesses the answer
                                            against criteria.
                                          type: string
                                      required:
                                        - type
                                        - path
                                        - golden
                                        - hint
                                      type: object
                                    - description: >-
                                        Check used to grade an onboarding
                                        example.
                                      properties:
                                        code:
                                          description: Validation code used by a code check.
                                          type: string
                                        hint:
                                          description: >-
                                            Hint explaining how to satisfy the
                                            check.
                                          type: string
                                        type:
                                          const: code
                                          description: >-
                                            Check type: `exact` compares an expected
                                            value, `code` runs a validation
                                            function, and `llm` assesses the answer
                                            against criteria.
                                          type: string
                                      required:
                                        - type
                                        - code
                                        - hint
                                      type: object
                                    - description: >-
                                        Check used to grade an onboarding
                                        example.
                                      properties:
                                        criteria:
                                          description: >-
                                            Criteria used to assess the example
                                            answer.
                                          type: string
                                        hint:
                                          description: >-
                                            Hint explaining how to satisfy the
                                            check.
                                          type: string
                                        imageUrl:
                                          description: Optional image URL used by the check.
                                          type: string
                                        paths:
                                          description: Answer paths to assess together.
                                          items:
                                            type: string
                                          type: array
                                        reference:
                                          description: Optional reference answer for the check.
                                          type: string
                                        type:
                                          const: llm
                                          description: >-
                                            Check type: `exact` compares an expected
                                            value, `code` runs a validation
                                            function, and `llm` assesses the answer
                                            against criteria.
                                          type: string
                                      required:
                                        - type
                                        - paths
                                        - criteria
                                      type: object
                                maxItems: 10
                                type: array
                              explanation:
                                description: Optional explanation of the example answer.
                                type: string
                              id:
                                description: Identifier of the example.
                                type: string
                              input:
                                additionalProperties:
                                  $ref: '#/components/schemas/JsonValue'
                                description: Example input values keyed by field name.
                                propertyNames:
                                  type: string
                                type: object
                              sourceItemId:
                                description: >-
                                  Source dataset item ID, when the example was
                                  taken from a dataset; otherwise absent.
                                type: string
                            required:
                              - id
                              - input
                              - checks
                            type: object
                          maxItems: 10
                          type: array
                        id:
                          description: Identifier of the onboarding block.
                          type: string
                        title:
                          description: Optional heading for the block.
                          type: string
                        type:
                          const: examples
                          description: >-
                            Block kind: `info`, `text`, `consent`, `quiz`,
                            `practice`, or interactive `examples`.
                          type: string
                      required:
                        - id
                        - type
                        - examples
                      type: object
                    - description: One onboarding content block.
                      properties:
                        consentLabel:
                          description: Text of the consent option the expert must accept.
                          type: string
                        content:
                          description: >-
                            Markdown content for this block; absent when no
                            content is supplied.
                          items:
                            description: Markdown content fragment.
                            properties:
                              type:
                                const: markdown
                                description: Content format; always `markdown`.
                                type: string
                              value:
                                description: Markdown text to display.
                                type: string
                            required:
                              - type
                              - value
                            type: object
                          type: array
                        id:
                          description: Identifier of the onboarding block.
                          type: string
                        title:
                          description: Optional heading for the block.
                          type: string
                        type:
                          const: consent
                          description: >-
                            Block kind: `info`, `text`, `consent`, `quiz`,
                            `practice`, or interactive `examples`.
                          type: string
                      required:
                        - id
                        - type
                        - consentLabel
                      type: object
                type: array
              id:
                description: Identifier of the onboarding step.
                type: string
            required:
              - id
            type: object
          type: array
      required:
        - enabled
        - steps
        - info
      type: object
    QualityCriteria:
      description: Requirements used to assess the generated answers.
      items:
        description: Quality requirement applied to a task entity.
        properties:
          id:
            description: Unique criterion identifier, formatted as a UUID.
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
            type: string
          llmQaInstruction:
            description: >-
              Additional instruction for LLM quality checks; absent when none is
              provided.
            maxLength: 5000
            type: string
          qualityElement:
            description: Description of the quality requirement.
            type: string
          targetEntity:
            description: Field identifier of the entity assessed by this criterion.
            type: string
          thresholds:
            description: Conditions for passing or failing this criterion.
            properties:
              fail:
                description: What makes an answer fail this criterion.
                type: string
              pass:
                description: What an acceptable answer must satisfy.
                type: string
            required:
              - pass
              - fail
            type: object
        required:
          - id
          - qualityElement
          - thresholds
          - targetEntity
        type: object
      type: array
    SmartSearch:
      anyOf:
        - additionalProperties: false
          description: >-
            Expert recruitment criteria, or null when no recruitment brief is
            configured.
          properties:
            briefDescription:
              description: Short description of the expert role.
              type: string
            extraHardRequirements:
              description: Mandatory qualifications for candidate experts.
              items:
                type: string
              type: array
            idealCandidateProfile:
              description: Description of an ideal candidate.
              type: string
            projectDescription:
              description: Project context for recruitment, or null when none is supplied.
              type:
                - string
                - 'null'
            relevanceCriteria:
              description: Criteria used to judge whether a candidate fits the task.
              items:
                type: string
              type: array
            sourceFingerprint:
              description: Fingerprint of the source brief; absent when none is recorded.
              type: string
            typicalJobTitles:
              description: Job titles commonly held by suitable experts.
              items:
                type: string
              type: array
            whoIsNotAFit:
              description: Reasons a candidate would be unsuitable.
              items:
                type: string
              type: array
          required:
            - briefDescription
            - projectDescription
            - extraHardRequirements
            - relevanceCriteria
            - typicalJobTitles
            - idealCandidateProfile
            - whoIsNotAFit
          type: object
        - description: >-
            Expert recruitment criteria, or null when no recruitment brief is
            configured.
          type: 'null'
      default: null
      description: >-
        Expert recruitment criteria, or null when no recruitment brief is
        configured.
    LabelingInterface:
      description: Labeling interface and its data transformations.
      properties:
        code:
          description: Source code for the labeling interface.
          type: string
        constants:
          description: >-
            JSON object encoded as a string, containing constants available to
            the interface.
          type: string
        data:
          description: JSON text containing sample data for the interface preview.
          type: string
        postprocess:
          default: return {};
          description: >-
            JavaScript code that transforms submitted interface values; defaults
            to `return {};`.
          type: string
        preprocess:
          description: JavaScript code that prepares input data for the interface.
          type: string
      required:
        - code
        - data
        - preprocess
        - constants
      type: object
    FieldRevisionSource:
      description: Source that wrote a field revision.
      oneOf:
        - additionalProperties: false
          description: Source that wrote a field revision.
          properties:
            type:
              const: user
              description: >-
                Revision author: `user` for a user action or `system` for a
                platform operation.
              type: string
            userId:
              description: Identifier of the user who wrote the revision.
              minLength: 1
              type: string
          required:
            - type
            - userId
          type: object
        - additionalProperties: false
          description: Source that wrote a field revision.
          properties:
            source:
              description: Identifier of the platform operation that wrote the revision.
              minLength: 1
              type: string
            type:
              const: system
              description: >-
                Revision author: `user` for a user action or `system` for a
                platform operation.
              type: string
          required:
            - type
            - source
          type: object
    TaskEntity:
      description: Task entity bound to a pipeline field.
      oneOf:
        - additionalProperties: false
          description: Task entity bound to a pipeline field.
          properties:
            allowedLabels:
              description: >-
                Allowed classification labels; absent for entities without a
                fixed label set.
              items:
                additionalProperties: false
                description: One allowed classification label.
                properties:
                  label:
                    description: Label displayed to the expert.
                    type: string
                  value:
                    description: Value stored for this label in the annotation.
                    type: string
                required:
                  - label
                  - value
                type: object
              type: array
            description:
              description: Explanation of the entity and how it is used in the task.
              type: string
            dynamic:
              const: false
              description: Whether one item can contain multiple instances of this entity.
              type: boolean
            entityType:
              description: >-
                Semantic entity type, such as `PROMPT`, `RESPONSE`,
                `SINGLE_LABEL`, or `VIDEO`.
              type: string
            fieldProxyId:
              description: Identifier of the field containing this entity.
              type: string
            jsonPath:
              description: JSONPath locating entity values within the field.
              type: string
            maxDurationSeconds:
              description: >-
                Maximum expected media duration in seconds; absent when not
                applicable.
              exclusiveMinimum: 0
              type: number
            maxEntities:
              description: >-
                Maximum expected instances of a dynamic entity per item; null or
                absent when no maximum is set.
              type: 'null'
            minDurationSeconds:
              description: >-
                Minimum expected media duration in seconds; absent when no
                minimum is set.
              exclusiveMinimum: 0
              type: number
            optional:
              description: Whether the entity value may be omitted.
              type: boolean
            relations:
              description: >-
                Relations to other entities; omit when the entity has no
                relations.
              items:
                anyOf:
                  - description: Relation to another entity.
                    properties:
                      id:
                        description: Field identifier of the related entity.
                        type: string
                      rel_type:
                        description: >-
                          Relation: `context` supplies context, `references`
                          cites another entity, `depends_on` requires it,
                          `evaluates` assesses it, or `conditional` applies only
                          when a condition matches.
                        enum:
                          - context
                          - references
                          - depends_on
                          - evaluates
                        type: string
                    required:
                      - id
                      - rel_type
                    type: object
                  - description: Relation to another entity.
                    properties:
                      condition:
                        description: >-
                          Condition controlling whether the related entity
                          applies.
                        properties:
                          operator:
                            description: >-
                              Comparison: `EQ` or `NEQ` for equality, `IN` or
                              `NOT_IN` for list membership, or `NOT_EMPTY` for a
                              nonempty value.
                            enum:
                              - EQ
                              - NEQ
                              - IN
                              - NOT_IN
                              - NOT_EMPTY
                            type: string
                          value:
                            anyOf:
                              - description: >-
                                  Value or values to compare with the related
                                  entity.
                                type: string
                              - description: >-
                                  Value or values to compare with the related
                                  entity.
                                items:
                                  type: string
                                type: array
                            description: >-
                              Value or values to compare with the related
                              entity.
                        required:
                          - operator
                          - value
                        type: object
                      id:
                        description: Field identifier of the related entity.
                        type: string
                      rel_type:
                        const: conditional
                        description: >-
                          Relation: `context` supplies context, `references`
                          cites another entity, `depends_on` requires it,
                          `evaluates` assesses it, or `conditional` applies only
                          when a condition matches.
                        type: string
                    required:
                      - id
                      - rel_type
                      - condition
                    type: object
                description: Relation to another entity.
              type: array
          required:
            - fieldProxyId
            - entityType
            - optional
            - jsonPath
            - description
            - dynamic
          type: object
        - additionalProperties: false
          description: Task entity bound to a pipeline field.
          properties:
            allowedLabels:
              description: >-
                Allowed classification labels; absent for entities without a
                fixed label set.
              items:
                additionalProperties: false
                description: One allowed classification label.
                properties:
                  label:
                    description: Label displayed to the expert.
                    type: string
                  value:
                    description: Value stored for this label in the annotation.
                    type: string
                required:
                  - label
                  - value
                type: object
              type: array
            description:
              description: Explanation of the entity and how it is used in the task.
              type: string
            dynamic:
              const: true
              description: Whether one item can contain multiple instances of this entity.
              type: boolean
            entityType:
              description: >-
                Semantic entity type, such as `PROMPT`, `RESPONSE`,
                `SINGLE_LABEL`, or `VIDEO`.
              type: string
            fieldProxyId:
              description: Identifier of the field containing this entity.
              type: string
            jsonPath:
              description: JSONPath locating entity values within the field.
              type: string
            maxDurationSeconds:
              description: >-
                Maximum expected media duration in seconds; absent when not
                applicable.
              exclusiveMinimum: 0
              type: number
            maxEntities:
              description: >-
                Maximum expected instances of a dynamic entity per item; null or
                absent when no maximum is set.
              type:
                - number
                - 'null'
            minDurationSeconds:
              description: >-
                Minimum expected media duration in seconds; absent when no
                minimum is set.
              exclusiveMinimum: 0
              type: number
            optional:
              description: Whether the entity value may be omitted.
              type: boolean
            relations:
              description: >-
                Relations to other entities; omit when the entity has no
                relations.
              items:
                anyOf:
                  - description: Relation to another entity.
                    properties:
                      id:
                        description: Field identifier of the related entity.
                        type: string
                      rel_type:
                        description: >-
                          Relation: `context` supplies context, `references`
                          cites another entity, `depends_on` requires it,
                          `evaluates` assesses it, or `conditional` applies only
                          when a condition matches.
                        enum:
                          - context
                          - references
                          - depends_on
                          - evaluates
                        type: string
                    required:
                      - id
                      - rel_type
                    type: object
                  - description: Relation to another entity.
                    properties:
                      condition:
                        description: >-
                          Condition controlling whether the related entity
                          applies.
                        properties:
                          operator:
                            description: >-
                              Comparison: `EQ` or `NEQ` for equality, `IN` or
                              `NOT_IN` for list membership, or `NOT_EMPTY` for a
                              nonempty value.
                            enum:
                              - EQ
                              - NEQ
                              - IN
                              - NOT_IN
                              - NOT_EMPTY
                            type: string
                          value:
                            anyOf:
                              - description: >-
                                  Value or values to compare with the related
                                  entity.
                                type: string
                              - description: >-
                                  Value or values to compare with the related
                                  entity.
                                items:
                                  type: string
                                type: array
                            description: >-
                              Value or values to compare with the related
                              entity.
                        required:
                          - operator
                          - value
                        type: object
                      id:
                        description: Field identifier of the related entity.
                        type: string
                      rel_type:
                        const: conditional
                        description: >-
                          Relation: `context` supplies context, `references`
                          cites another entity, `depends_on` requires it,
                          `evaluates` assesses it, or `conditional` applies only
                          when a condition matches.
                        type: string
                    required:
                      - id
                      - rel_type
                      - condition
                    type: object
                description: Relation to another entity.
              type: array
          required:
            - fieldProxyId
            - entityType
            - optional
            - jsonPath
            - description
            - dynamic
          type: object
  headers:
    RateLimit-Limit:
      description: The maximum number of requests allowed in the current window.
      schema:
        type: integer
    RateLimit-Policy:
      description: The rate limit policy (e.g., "60;w=60").
      schema:
        type: string
    RateLimit-Remaining:
      description: The number of requests remaining in the current window.
      schema:
        type: integer
    RateLimit-Reset:
      description: The number of seconds until the current window resets.
      schema:
        type: integer
    X-Request-Id:
      description: >-
        The request id: the X-Request-Id you sent when it is 1-128 characters of
        letters, digits, ".", "_" or "-", otherwise a generated UUID. Present on
        every response, including errors; quote it when reporting a problem.
      schema:
        type: string
  securitySchemes:
    apiKeyAuth:
      description: >-
        Enter `ApiKey <your-api-key>` in Authorization, including the `ApiKey `
        prefix. In cURL and Python samples, `<api-key>` means this full value.
        The TypeScript SDK adds the prefix for you.
      in: header
      name: Authorization
      type: apiKey
    scopedTokenAuth:
      description: >-
        Enter the project-scoped token as `pst_...` in X-Scoped-Token, without
        an `ApiKey ` prefix. Create a token with POST
        /projects/{projectId}/tokens.
      in: header
      name: X-Scoped-Token
      type: apiKey

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.