> ## 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.

# Mark an inbound transfer for urgent processing

> Flags an INBOUND transfer that is AvailableForDownload for
IMMEDIATE download+processing instead of waiting for the
next poll cycle. The actor is derived from the validated
request identity (never the payload or path). The service
validates direction, state, and the per-tenant
urgency-enabled policy, then in ONE per-tenant transaction
stamps a durable urgent_requested_at marker on the transfer
row and records the marked-urgent audit event. After commit
it sends a best-effort Redis wake so the worker polls the
tenant immediately; the prioritized per-tenant poll picks
the marked row up FIRST (and still does so on the next
regular tick if the wake is lost), downloads the file, and
acknowledges BACEN with REC. Urgency changes only timing.



## OpenAPI

````yaml en/openapi/v3-current/sta.yaml post /v1/inbound/transfers/{id}/mark-urgent
openapi: 3.0.3
info:
  title: Lerian STA API
  description: >-
    API for Lerian STA — the participant-side rail that connects the institution
    to Banco Central do Brasil's STA (Sistema de Transferencia de Arquivos)
    file-exchange system. It covers outbound and inbound file transfers, BACEN
    credential management, inbound source polling configuration, and the tenant
    trust-store for message-signing certificates.
  version: v1.0.0
servers:
  - url: https://sta.sandbox.lerian.net
security:
  - BearerAuth: []
tags:
  - name: transfers
    description: >-
      Outbound and inbound STA file transfers — creation, listing, read,
      cancellation, retry, and urgent-processing marking.
  - name: trust-store
    description: >-
      Tenant trust-store X.509 certificate lifecycle: listing, upload, deletion,
      and status summary.
  - name: credentials
    description: >-
      BACEN STA credential management: creation, read, update, rotation,
      revocation, and connectivity testing.
  - name: inbound-source-configs
    description: >-
      Inbound source polling configuration: creation, read, update, deletion,
      manual poll triggering, and discovery reserve usage.
  - name: health
    description: Service health and readiness reporting.
paths:
  /v1/inbound/transfers/{id}/mark-urgent:
    post:
      tags:
        - transfers
      summary: Mark an inbound transfer for urgent processing
      description: |-
        Flags an INBOUND transfer that is AvailableForDownload for
        IMMEDIATE download+processing instead of waiting for the
        next poll cycle. The actor is derived from the validated
        request identity (never the payload or path). The service
        validates direction, state, and the per-tenant
        urgency-enabled policy, then in ONE per-tenant transaction
        stamps a durable urgent_requested_at marker on the transfer
        row and records the marked-urgent audit event. After commit
        it sends a best-effort Redis wake so the worker polls the
        tenant immediately; the prioritized per-tenant poll picks
        the marked row up FIRST (and still does so on the next
        regular tick if the wake is lost), downloads the file, and
        acknowledges BACEN with REC. Urgency changes only timing.
      parameters:
        - description: Transfer UUID
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/http.TransferView'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
components:
  schemas:
    http.TransferView:
      properties:
        bytesDownloaded:
          type: integer
        bytesUploaded:
          type: integer
        createdAt:
          type: string
        credentialId:
          type: string
        currentState:
          type: string
        currentStateCode:
          type: integer
        direction:
          type: string
        documentType:
          type: string
        downloadAttempts:
          description: |-
            DownloadAttempts is the legacy aggregate counter; for inbound
            transfers, see hashMismatchAttempts + transmissionAttempts.
          type: integer
        errorCode:
          type: string
        expired:
          type: boolean
        expiresAt:
          description: >-
            ExpiresAt / SecondsRemaining / Expired project the 44h BACEN
            protocol

            TTL directly onto the read view (the dedicated GET /:id/expiry
            endpoint

            was folded in here). ExpiresAt is nil — and SecondsRemaining 0,

            Expired false — until the transfer is assigned a protocol number

            (ProtocolGeneratedAt nil). Once assigned, ExpiresAt is

            ProtocolGeneratedAt + TTL; SecondsRemaining counts down to it at the

            handler clock and clamps to 0, at which point Expired flips true.
          type: string
        fileName:
          type: string
        fileRef:
          type: string
        fileSizeBytes:
          type: integer
        hashMismatchAttempts:
          description: |-
            HashMismatchAttempts is the inbound-only counter that drives the
            StateInconsistent terminal budget (HASH_MISMATCH). Always 0 for
            outbound transfers.
          type: integer
        id:
          type: string
        lastTransitError:
          type: string
        protocolGeneratedAt:
          type: string
        protocolNumber:
          type: string
        secondsRemaining:
          type: integer
        sourceProduct:
          type: string
        transmissionAttempts:
          description: |-
            TransmissionAttempts is the inbound-only counter that drives the
            StateCanceled / DOWNLOAD_FAILED terminal budget. Always 0 for
            outbound transfers.
          type: integer
        updatedAt:
          type: string
        uploadAttempts:
          type: integer
        urgentRequestedAt:
          description: |-
            UrgentRequestedAt is the UTC timestamp at which an operator flagged
            this inbound transfer for urgent processing (mark-urgent). Nil (and
            omitted) for transfers that were never marked urgent.
          type: string
      type: object
  securitySchemes:
    BearerAuth:
      description: 'Bearer token authentication (format: "Bearer {token}")'
      in: header
      name: Authorization
      type: apiKey

````