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

# List quarantined versions

> The Record Versions stuck in quarantine, in Version id order, with the step each failed at (normalization or ingestion), its reason and when it was quarantined. Stuck means the Version can still become current; a Version its Record no longer desires (a newer revision was accepted) or whose Record was withdrawn is not listed. A reason recorded before quarantine reasons were structured has only its code and names no plugin, and its quarantined_at is when its revision was accepted. Every filter narrows the list; plugin matches the plugin id the reason names. Requires plugins:admin; a key limited to some Corpora lists theirs only. The cursor is bound to the key's scope and filters.



## OpenAPI

````yaml /openapi.yaml get /v0/admin/quarantine
openapi: 3.1.0
info:
  title: Quivr HTTP API
  version: 0.0.0-draft
  description: >-
    Every endpoint of the Quivr v0 HTTP API. Send an API key as a bearer token;
    the key decides the Organization, the actions and the Corpora a request may
    reach.
servers: []
security:
  - ApiKey: []
paths:
  /v0/admin/quarantine:
    get:
      tags:
        - Admin
      summary: List quarantined versions
      description: >-
        The Record Versions stuck in quarantine, in Version id order, with the
        step each failed at (normalization or ingestion), its reason and when it
        was quarantined. Stuck means the Version can still become current; a
        Version its Record no longer desires (a newer revision was accepted) or
        whose Record was withdrawn is not listed. A reason recorded before
        quarantine reasons were structured has only its code and names no
        plugin, and its quarantined_at is when its revision was accepted. Every
        filter narrows the list; plugin matches the plugin id the reason names.
        Requires plugins:admin; a key limited to some Corpora lists theirs only.
        The cursor is bound to the key's scope and filters.
      operationId: listQuarantinedVersions
      parameters:
        - name: corpus_id
          in: query
          required: false
          schema:
            type: string
            minLength: 1
        - name: plugin
          in: query
          required: false
          schema:
            type: string
            minLength: 1
        - name: code
          in: query
          required: false
          schema:
            type: string
            minLength: 1
        - name: quarantined_after
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: quarantined_before
          in: query
          required: false
          schema:
            type: string
            format: date-time
        - name: page_cursor
          in: query
          required: false
          schema:
            type: string
            minLength: 1
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 100
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuarantinePage'
        default:
          description: >-
            Structured error; 401 unauthenticated, 403 without plugins:admin,
            404 a corpus_id outside the key's Corpora, 409 cursor_scope_changed,
            422 invalid query, limit, cursor or window, 503 storage unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    QuarantinePage:
      type: object
      additionalProperties: false
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/QuarantinedVersion'
        next_page_cursor:
          type: string
          minLength: 1
          description: Present while more Versions may follow.
      required:
        - items
    Error:
      type: object
      additionalProperties: false
      properties:
        code:
          type: string
          minLength: 1
        message:
          type: string
          minLength: 1
        retryable:
          type: boolean
        field:
          type: string
          minLength: 1
          description: >-
            JSON Pointer (RFC 6901) to the request member that caused a 422,
            when known (for example /config/url or /credential/secret/token on
            connector commands).
        resync_url:
          type: string
          format: uri-reference
      required:
        - code
        - message
        - retryable
    QuarantinedVersion:
      type: object
      additionalProperties: false
      description: A Record Version stuck in quarantine.
      properties:
        version_id:
          type: string
          minLength: 1
        record_id:
          type: string
          minLength: 1
        corpus_id:
          type: string
          minLength: 1
        receipt_id:
          type: string
          minLength: 1
        stage:
          type: string
          enum:
            - normalization
            - ingestion
          description: >-
            The step it failed at, which a reprocess reruns. normalization - its
            normalizer failed or its route was removed, and it was published
            with its submitted input; ingestion - its segmentation through the
            ingestion plugin was refused or stopped.
        reason:
          $ref: '#/components/schemas/Diagnostic'
        quarantined_at:
          type: string
          format: date-time
      required:
        - version_id
        - record_id
        - corpus_id
        - receipt_id
        - stage
        - reason
        - quarantined_at
    Diagnostic:
      type: object
      additionalProperties: false
      description: >-
        A structured processing diagnostic. plugin, contribution and
        invocation_id name the external

        invocation a normalization diagnostic concerns. Codes of external
        normalization:


        - normalizer_failed: the normalizer answered a terminal error. The
        Version is quarantined.

        - normalizer_invalid_output: the output broke the Plugin Protocol or the
        Manifest rules (schema,
          malformed or duplicate Part, a Blob Part that is not the input Blob or has another checksum,
          an undeclared extension namespace, too many Parts, a response over the size bound). Nothing
          from it is published; the Version is quarantined.
        - normalizer_timeout: the invocations kept exceeding the timeout until
        the retry budget (the
          manifest's retry.max_attempts, capped by the engine at 5) was spent. The Version is quarantined.
        - normalizer_retries_exhausted: the normalizer kept answering retryable
        errors until the retry
          budget was spent. The Version is quarantined.
        - input_unverified: the input Blob was no longer the verified accepted
        input. The Version is
          quarantined.
        - normalizer_unrouted: the media type's route was removed after
        acceptance and the built-in text
          path cannot read it (a text/* Blob takes the built-in text path instead). The Version is
          quarantined.
        - normalization_superseded: a newer revision of the Record was accepted
        before this Version was
          normalized, so the normalizer was not invoked. The Version is quarantined and never current.
        - normalizer_conflict: a later invocation with the same idempotency key
        returned a different
          output. The first recorded output is kept and published; nothing is overwritten.

        On an optional route every quarantining code above that comes from the
        normalizer is instead

        listed on a searchable Version published through the built-in text path.
        A plugin that is

        unavailable (connection failure, 5xx without an error envelope,
        discovery that does not match the

        pinned manifest) is retried with backoff and produces no diagnostic
        while the active Pipeline

        Plan names it; the Receipt shows plugin_unavailable while it retries.


        - pinned_plugin_unavailable: the processing of this Version started on a
        Pipeline Plan whose
          normalizer or ingestion plugin an operator has since replaced, and that plugin could not be
          reached, or could no longer serve it, for the deployment's attempt budget. The work is never
          moved to the plugin that
          replaced it: the Version is quarantined, or, when its text was already searchable, its
          enrichment stops. plan, plugin and plugin_version name the plan and the plugin version.
        - pinned_plan_stopped: the processing of this Version started on a
        Pipeline Plan that an operator
          rolled back with pinned_work=stop. At its next call to a plugin that left the active plan, the
          work stopped instead of calling it, with the same outcome and fields as
          pinned_plugin_unavailable.

        Quarantined Versions keep their input reference and reason. An operator
        lists them and reprocesses

        them with the active plan (listQuarantinedVersions,
        reprocessQuarantine); a reprocess that fails

        again replaces the reason.
      properties:
        code:
          type: string
          minLength: 1
        message:
          type: string
          minLength: 1
        retryable:
          type: boolean
          description: Whether the same input may succeed if processed again.
        plugin:
          type: string
          minLength: 1
          description: Plugin id of the invocation.
        plugin_version:
          type: string
          minLength: 1
          description: >-
            Plugin version of a pinned_plugin_unavailable or pinned_plan_stopped
            diagnostic.
        plan:
          type: string
          minLength: 1
          description: >-
            Pipeline Plan the stopped work was pinned to, in a
            pinned_plugin_unavailable or pinned_plan_stopped diagnostic.
        contribution:
          type: string
          minLength: 1
        invocation_id:
          type: string
          minLength: 1
      required:
        - code
        - message
        - retryable
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      description: >-
        API key, not necessarily a JWT. Server derives Organization, permitted
        actions and Corpus scope; every resource access is authorized.

````