Superb AI Projects Workflow API

The projects-workflow API from Superb AI — 15 operation(s) for projects-workflow.

Operations 16

POST /tenants/{slug}/projects/{project_id}/assets/{asset_id}/claim Claim Asset #
POST /tenants/{slug}/projects/{project_id}/assets/{asset_id}/assign Assign Asset #
POST /tenants/{slug}/projects/{project_id}/assets/{asset_id}/unassign Unassign Asset #
POST /tenants/{slug}/projects/{project_id}/assets/{asset_id}/submit Submit Asset #
POST /tenants/{slug}/projects/{project_id}/assets/{asset_id}/approve Approve Asset #
POST /tenants/{slug}/projects/{project_id}/assets/{asset_id}/reject Reject Asset #
POST /tenants/{slug}/projects/{project_id}/assets/{asset_id}/skip Skip Asset #
POST /tenants/{slug}/projects/{project_id}/assets/{asset_id}/reopen Reopen Asset #
GET /tenants/{slug}/projects/{project_id}/queue Get My Queue #
GET /tenants/{slug}/projects/{project_id}/queue/stats Queue Stats #
GET /tenants/{slug}/projects/{project_id}/assets List Asset States #
GET /tenants/{slug}/projects/{project_id}/assets/{asset_id} Get Labeling Context #
POST /tenants/{slug}/projects/{project_id}/assets/{asset_id}/annotations Create Annotation #
POST /tenants/{slug}/projects/{project_id}/assets/{asset_id}/annotations/batch-create Batch Create Annotations #
PATCH /tenants/{slug}/projects/{project_id}/annotations/{annotation_id} Update Annotation #
DELETE /tenants/{slug}/projects/{project_id}/annotations/{annotation_id} Delete Annotation #

Work with this as data

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

MCP server

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

https://apis.io/mcp

Tools for apis

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

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/superb-ai-projects-workflow-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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

Get an API key

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

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

OpenAPI Specification

superb-ai-projects-workflow-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: MLOps Platform Projects Workflow API
  description: Multi-tenant labeling-platform backend.
  version: 0.1.0
tags:
- name: projects-workflow
paths:
  /tenants/{slug}/projects/{project_id}/assets/{asset_id}/claim:
    post:
      tags:
      - projects-workflow
      summary: Claim Asset
      description: 'Labeler claims a to_label task for themselves.


        Allowed when the project''s `assignment_mode=''self_claim''` AND the task is

        not already assigned to someone else. In `manual` mode, only the assigned

        labeler can claim — and they get there via /assign first.'
      operationId: projects-workflow-claim_asset
      security:
      - HTTPBearer: []
      parameters:
      - name: asset_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Asset Id
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetStateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '401':
          description: Unauthenticated — missing, malformed, or expired Bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Authenticated but not authorized for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found in this tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — resource state prevents this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate-limited (per-tenant token bucket)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /tenants/{slug}/projects/{project_id}/assets/{asset_id}/assign:
    post:
      tags:
      - projects-workflow
      summary: Assign Asset
      description: 'Manager assigns a task to a specific user. The user must be a project

        member with role labeler/reviewer/manager (anyone who can label).'
      operationId: projects-workflow-assign_asset
      security:
      - HTTPBearer: []
      parameters:
      - name: asset_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Asset Id
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetStateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '401':
          description: Unauthenticated — missing, malformed, or expired Bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Authenticated but not authorized for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found in this tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — resource state prevents this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate-limited (per-tenant token bucket)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /tenants/{slug}/projects/{project_id}/assets/{asset_id}/unassign:
    post:
      tags:
      - projects-workflow
      summary: Unassign Asset
      description: 'Manager clears the current assignee. If the row is `in_progress`,

        status reverts to `to_label`. No-op (skipped) when already unassigned.'
      operationId: projects-workflow-unassign_asset
      security:
      - HTTPBearer: []
      parameters:
      - name: asset_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Asset Id
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetStateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '401':
          description: Unauthenticated — missing, malformed, or expired Bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Authenticated but not authorized for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found in this tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — resource state prevents this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate-limited (per-tenant token bucket)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /tenants/{slug}/projects/{project_id}/assets/{asset_id}/submit:
    post:
      tags:
      - projects-workflow
      summary: Submit Asset
      description: Labeler submits their work for review. Must be the assigned labeler.
      operationId: projects-workflow-submit_asset
      security:
      - HTTPBearer: []
      parameters:
      - name: asset_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Asset Id
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetStateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '401':
          description: Unauthenticated — missing, malformed, or expired Bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Authenticated but not authorized for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found in this tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — resource state prevents this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate-limited (per-tenant token bucket)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /tenants/{slug}/projects/{project_id}/assets/{asset_id}/approve:
    post:
      tags:
      - projects-workflow
      summary: Approve Asset
      operationId: projects-workflow-approve_asset
      security:
      - HTTPBearer: []
      parameters:
      - name: asset_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Asset Id
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetStateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '401':
          description: Unauthenticated — missing, malformed, or expired Bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Authenticated but not authorized for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found in this tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — resource state prevents this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate-limited (per-tenant token bucket)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /tenants/{slug}/projects/{project_id}/assets/{asset_id}/reject:
    post:
      tags:
      - projects-workflow
      summary: Reject Asset
      description: Reviewer rejects work — auto-routes back to the original labeler.
      operationId: projects-workflow-reject_asset
      security:
      - HTTPBearer: []
      parameters:
      - name: asset_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Asset Id
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RejectRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetStateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '401':
          description: Unauthenticated — missing, malformed, or expired Bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Authenticated but not authorized for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found in this tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — resource state prevents this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate-limited (per-tenant token bucket)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /tenants/{slug}/projects/{project_id}/assets/{asset_id}/skip:
    post:
      tags:
      - projects-workflow
      summary: Skip Asset
      description: 'Labeler sets the asset aside — ''nothing to label'' or unusable data (ADR-0110).

        Terminal `skipped` state, distinct from a done label. No reason captured (the

        skip guide is looser; labeler judgment is trusted). Waives required

        classifications — skip means there''s nothing to answer, including no scene.'
      operationId: projects-workflow-skip_asset
      security:
      - HTTPBearer: []
      parameters:
      - name: asset_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Asset Id
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetStateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '401':
          description: Unauthenticated — missing, malformed, or expired Bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Authenticated but not authorized for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found in this tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — resource state prevents this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate-limited (per-tenant token bucket)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /tenants/{slug}/projects/{project_id}/assets/{asset_id}/reopen:
    post:
      tags:
      - projects-workflow
      summary: Reopen Asset
      description: 'Reviewer/manager revives a skipped asset back into the queue (ADR-0110) —

        e.g. when data is scarce and a set-aside asset must be labeled after all.'
      operationId: projects-workflow-reopen_asset
      security:
      - HTTPBearer: []
      parameters:
      - name: asset_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Asset Id
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetStateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '401':
          description: Unauthenticated — missing, malformed, or expired Bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Authenticated but not authorized for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found in this tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — resource state prevents this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate-limited (per-tenant token bucket)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /tenants/{slug}/projects/{project_id}/queue:
    get:
      tags:
      - projects-workflow
      summary: Get My Queue
      description: 'Labeler''s queue: tasks they should work on now.


        - Their assigned in_progress / to_label tasks

        - In `self_claim` mode, also unassigned to_label tasks (claimable)


        Optional `?status=` and `?rework=` filters power the 4-card hero UX

        (All / New / Rework / Continue) per ADR-0029.'
      operationId: projects-workflow-get_my_queue
      security:
      - HTTPBearer: []
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          description: Max rows per page.
          default: 50
          title: Limit
        description: Max rows per page.
      - name: cursor
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Opaque pagination cursor from a previous response's `next_cursor`; omit for the first page.
          title: Cursor
        description: Opaque pagination cursor from a previous response's `next_cursor`; omit for the first page.
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - enum:
            - to_label
            - in_progress
            type: string
          - type: 'null'
          description: 'Optional: `to_label` or `in_progress`. Maps the FE 4-card hero (per ADR-0029).'
          title: Status
        description: 'Optional: `to_label` or `in_progress`. Maps the FE 4-card hero (per ADR-0029).'
      - name: rework
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          description: 'Optional: `true` filters to `rework_count > 0`; `false` to `rework_count = 0`. Combine with `status=in_progress` for the Rework / Continue split.'
          title: Rework
        description: 'Optional: `true` filters to `rework_count > 0`; `false` to `rework_count = 0`. Combine with `status=in_progress` for the Rework / Continue split.'
      - name: include
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: 'CSV: `thumbnail_url` to embed a presigned thumbnail URL on each row''s `asset.thumbnail_url`. Unknown values → 400.'
          title: Include
        description: 'CSV: `thumbnail_url` to embed a presigned thumbnail URL on each row''s `asset.thumbnail_url`. Unknown values → 400.'
      - name: include_total
        in: query
        required: false
        schema:
          type: boolean
          description: When true, response carries `total` = COUNT(*) for the same filter (ignores cursor/limit). `/queue/stats` is the cheaper choice for the unfiltered hero counts.
          default: false
          title: Include Total
        description: When true, response carries `total` = COUNT(*) for the same filter (ignores cursor/limit). `/queue/stats` is the cheaper choice for the unfiltered hero counts.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetStatePage'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '401':
          description: Unauthenticated — missing, malformed, or expired Bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Authenticated but not authorized for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found in this tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — resource state prevents this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate-limited (per-tenant token bucket)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /tenants/{slug}/projects/{project_id}/queue/stats:
    get:
      tags:
      - projects-workflow
      summary: Queue Stats
      description: 'Bucket counts for the labeler''s 4-card hero (ADR-0029).


        Scoped to the caller''s queue (their assigned tasks + the unassigned pool

        when `assignment_mode=self_claim`). Same scoping rules as `/queue`.'
      operationId: projects-workflow-queue_stats
      security:
      - HTTPBearer: []
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueueStatsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '401':
          description: Unauthenticated — missing, malformed, or expired Bearer token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Authenticated but not authorized for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Resource not found in this tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — resource state prevents this action
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate-limited (per-tenant token bucket)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /tenants/{slug}/projects/{project_id}/assets:
    get:
      tags:
      - projects-workflow
      summary: List Asset States
      description: 'Paginated list of asset states across the project (manager dashboard).


        `?q=` matches the asset filename; `?tags=` is contains-ALL over the

        per-(project,asset) tag set (ADR-0050); `?classes=` is ANY-of over the asset''s

        live annotations (ADR-0100). Each has a negative twin (`tags_none`,

        `classes_none`, `status_not`, plus the `assigned`/`tagged` tri-states) that

        composes by AND — "all of these, except those" (ADR-0115).'
      operationId: projects-workflow-list_asset_states
      security:
      - HTTPBearer: []
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
          title: Slug
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Project Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          description: Max rows per page.
          default: 50
          title: Limit
        description: Max rows per page.
      - name: cursor
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Opaque pagination cursor from a previous response's `next_cursor`; omit for the first page.
          title: Cursor
        description: Opaque pagination cursor from a previous response's `next_cursor`; omit for the first page.
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/WorkflowStatus'
          - type: 'null'
          description: Filter to a single `WorkflowStatus` (`to_label`, `in_progress`, `in_review`, `done`). Unknown values → 422.
          title: Status
        description: Filter to a single `WorkflowStatus` (`to_label`, `in_progress`, `in_review`, `done`). Unknown values → 422.
      - name: status_not
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/WorkflowStatus'
          - type: 'null'
          description: Repeatable `?status_not=done&status_not=skipped` — exclude the listed statuses (ADR-0115). Unknown values → 422; a value repeated in `status` → 400.
          title: Status Not
        description: Repeatable `?status_not=done&status_not=skipped` — exclude the listed statuses (ADR-0115). Unknown values → 422; a value repeated in `status` → 400.
      - name: assigned_to
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter to tasks assigned to a specific labeler (manager dashboard).
          title: Assigned To
        description: Filter to tasks assigned to a specific labeler (manager dashboard).
      - name: assigned
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          description: '`true`: tasks assigned to anyone; `false`: the unassigned pool (ADR-0115). Contradictory with `assigned_to` when false (400).'
          title: Assigned
        description: '`true`: tasks assigned to anyone; `false`: the unassigned pool (ADR-0115). Contradictory with `assigned_to` when false (400).'
      - name: reviewer_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter to tasks last reviewed by a specific reviewer.
          title: Reviewer Id
        description: Filter to tasks last reviewed by a specific reviewer.
      - name: rework_count_min
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 1
          - type: 'null'
          description: Filter to tasks with `rework_count >= N`. Useful for QA queues.
          title: Rework Count Min
        description: Filter to tasks with `rework_count >= N`. Useful for QA queues.
      - name: tags
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: 'Repeatable `?tags=a&tags=b`. Contains-ALL: matches rows whose tag set includes every listed value (ADR-0050).'
          title: Tags
        description: 'Repeatable `?tags=a&tags=b`. Contains-ALL: matches rows whose tag set includes every listed value (ADR-0050).'
      - name: tags_none
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: Repeatable `?tags_none=a&tags_none=b`. Excludes rows carrying ANY listed tag (untagged rows match). Combine with `tags` for “all of these, except those” (ADR-0115). A value repeated in `tags` → 400.
          title: Tags None
        description: Repeatable `?tags_none=a&tags_none=b`. Excludes rows carrying ANY listed tag (untagged rows match). Combine with `tags` for “all of these, except those” (ADR-0115). A value repeated in `tags` → 400.
      - name: tagged
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          description: '`true`: rows with at least one tag; `false`: untagged rows. Contradictory with `tags` when false (400).'
          title: Tagged
        description: '`true`: rows with at least one tag; `false`: untagged rows. Contradictory with `tags` when false (400).'
      - name: classes
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              type: string
              format: uuid
          - type: 'null'
          description: 'Repeatable `?classes=a&classes=b`. ANY-of: matches assets carrying at least one annotation of any listed class (ADR-0100). Unknown class ids match nothing.'
          title: Classes
        description: 'Repeatable `?classes=a&classes=b`. ANY-of: matches assets carrying at least one annotation of any listed class (ADR-0100). Unknown class ids match nothing.'


# --- truncated at 32 KB (83 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/superb-ai/refs/heads/main/openapi/superb-ai-projects-workflow-api-openapi.yml