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

# Re-present a quarantined provider webhook

> Returns ONE inbound provider webhook out of quarantine and back into the reconciliation sweep's claim set, with a full retry budget. Quarantine is the terminal PERMANENTLY_FAILED state: the service modelled the event, could not apply it within its retry budget, and stopped claiming the row. NOTHING IS APPLIED BY THIS CALL. It does not contact the ledger, does not contact the provider and does not change any boleto or payment. It changes one row of the webhook journal so that the ordinary drain picks the delivery up again on its next cycle, through exactly the same processing path every other delivery takes. Watch the drain, not this response, to learn whether the delivery finally applied. A request under a new Idempotency-Key for a row that is no longer in quarantine — because a previous call already released it, or because it never was — is refused with 409 PBP-0007 rather than released a second time. Fix the cause before re-presenting; a row released into the same failing condition simply returns to quarantine.



## OpenAPI

````yaml /en/openapi/v3-current/payments.yaml post /v1/admin/quarantine/webhooks/{id}/represent
openapi: 3.1.0
info:
  description: >-
    API for the Lerian Payments interface via BTG. It covers boleto issuance,
    cancellation, and queries; bill payments (bankslip, utilities, and DARF) and
    queries; aggregated boleto and payment dashboards; provider connection and
    outbound webhook configuration; and the provider webhook receiver for
    settlement events.


    ERROR BODIES. A failed request arrives in one of two shapes, and which one
    you get depends on where the service catches the failure. A failure that the
    request pipeline catches before the API layer sees it answers a flat JSON
    body on application/json; the idempotency check is the pipeline rule you
    meet most often. Authentication and authorization refusals follow the
    response contract documented by the operation. Everything the API layer
    catches answers an RFC 9457 problem document on application/problem+json.
    Read the media type to tell the two apart. Branch on the code member. A
    license refusal carries an LCS code, listed in the License Manager error
    list.
  title: Payments — via BTG API
  version: 1.0.0
servers:
  - url: https://api.example.com
    description: >-
      Replace the example host with the URL provided during environment
      onboarding.
security: []
tags:
  - description: >-
      Tenant-level setup: connecting the banking provider and configuring where
      status notifications are delivered.
    name: Admin
  - description: Issuing, querying and cancelling boletos, and retrieving the rendered PDF.
    name: Boletos
  - description: >-
      Aggregated counts, amounts and breakdowns over a period, for boletos and
      for payments.
    name: Dashboards
  - description: >-
      Paying bankslips, utility bills and DARF tax slips, and querying those
      payments.
    name: Payments
  - description: >-
      The webhook the payment provider posts settlement events to. Authenticated
      with a credential agreed with the provider, not with the platform identity
      used by the rest of this API.
    name: Settlement
paths:
  /v1/admin/quarantine/webhooks/{id}/represent:
    post:
      tags:
        - Admin
      summary: Re-present a quarantined provider webhook
      description: >-
        Returns ONE inbound provider webhook out of quarantine and back into the
        reconciliation sweep's claim set, with a full retry budget. Quarantine
        is the terminal PERMANENTLY_FAILED state: the service modelled the
        event, could not apply it within its retry budget, and stopped claiming
        the row. NOTHING IS APPLIED BY THIS CALL. It does not contact the
        ledger, does not contact the provider and does not change any boleto or
        payment. It changes one row of the webhook journal so that the ordinary
        drain picks the delivery up again on its next cycle, through exactly the
        same processing path every other delivery takes. Watch the drain, not
        this response, to learn whether the delivery finally applied. A request
        under a new Idempotency-Key for a row that is no longer in quarantine —
        because a previous call already released it, or because it never was —
        is refused with 409 PBP-0007 rather than released a second time. Fix the
        cause before re-presenting; a row released into the same failing
        condition simply returns to quarantine.
      operationId: representQuarantinedWebhook
      parameters:
        - description: >-
            Tenant organization ID. Optional. The organization context is
            determined by the credentials you authenticate with; this header
            does not select or change it.
          in: header
          name: X-Organization-Id
          schema:
            description: >-
              Tenant organization ID. Optional. The organization context is
              determined by the credentials you authenticate with; this header
              does not select or change it.
            type: string
        - description: >-
            Client-supplied idempotency key, a UUID. Required: a request without
            it, or with a value that is not a UUID, is refused with 400
            PBP-0012.
          in: header
          name: Idempotency-Key
          required: true
          schema:
            description: >-
              Client-supplied idempotency key, a UUID. Required: a request
              without it, or with a value that is not a UUID, is refused with
              400 PBP-0012.
            type: string
        - description: >-
            Identifier of the quarantined webhook journal row (UUID), as
            reported by the PERMANENTLY_FAILED log line and metric.
          in: path
          name: id
          required: true
          schema:
            description: >-
              Identifier of the quarantined webhook journal row (UUID), as
              reported by the PERMANENTLY_FAILED log line and metric.
            examples:
              - 123e4567-e89b-12d3-a456-426614174000
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepresentQuarantinedWebhookResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
            text/plain:
              schema:
                type: string
          description: >-
            Authentication failed: the request carries no valid credential, or
            the credential does not identify a tenant. The error body is either
            `application/json` with error code `PBP-0003` or
            `application/problem+json` (RFC 9457); read the `Content-Type` to
            parse it. The `text/plain` media type listed for this status is not
            returned. Obtain a valid bearer token and send the request again.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                type: string
          description: >-
            The authenticated principal is not allowed to perform this request.
            The error body is `application/json` with error code `PBP-0004`: the
            principal lacks permission for this operation, and the permission
            has to be granted before the request can succeed. The `text/plain`
            media type listed for this status is not returned.
        '404':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Not Found
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            Conflict. PBP-0007 means the webhook exists and is not in
            quarantine: a previous call already re-presented it, or it was never
            quarantined. Nothing was changed. While an earlier request under the
            same `Idempotency-Key` is still being processed, a request under
            that key is answered PBP-0007 and is not run. Send it again under
            the SAME key after a short wait: the key answers this code for at
            most five minutes after the earlier request arrived. Afterwards the
            same key answers with the earlier request's stored answer, with 500
            PBP-0002 when that answer cannot be replayed, or, when no answer was
            kept, by running the request. Do not send it under a new key to get
            past this answer: the earlier request may still take effect.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unprocessable Entity
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Internal Server Error
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Service Unavailable
      security:
        - BearerAuth: []
components:
  schemas:
    RepresentQuarantinedWebhookResponse:
      additionalProperties: false
      properties:
        dedupKey:
          type: string
        priorVerdict:
          type: string
        providerEventType:
          type: string
        providerType:
          type: string
        receivedAt:
          type: string
        representedAt:
          type: string
        retryCountBefore:
          format: int64
          type: integer
        status:
          type: string
        webhookId:
          type: string
      required:
        - webhookId
        - dedupKey
        - providerType
        - providerEventType
        - status
        - retryCountBefore
        - receivedAt
        - representedAt
      type: object
    ErrorResponse:
      additionalProperties: false
      properties:
        code:
          type: string
        details:
          additionalProperties: {}
          type: object
        message:
          type: string
        title:
          type: string
      required:
        - code
        - title
        - message
      type: object
    Detail:
      additionalProperties: true
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upstream:
          $ref: '#/components/schemas/Upstream'
          description: >-
            RFC 9457 extension member: the error a proxied third-party provider
            reported. Absent unless the emitting service explicitly surfaced
            one.
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````

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