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

# Disparar Poller de TED IN

> Utilice este endpoint para forzar un ciclo inmediato de polling JD entrante para el tenant actual. Este es un endpoint operacional destinado a acelerar la recepción de mensajes de retorno de JD sin esperar el intervalo de polling programado. No requiere el header `X-Organization-Id` — el tenant se deriva del contexto autenticado.

Las reentregas con la misma clave reproducen la respuesta en caché en lugar de drenar JD nuevamente. Una duplicación en vuelo es rechazada con 409 por el middleware de idempotencia a nivel de ruta.



## OpenAPI

````yaml es/openapi/v3-current/ted.yaml post /v1/transfers/ted-in/poll
openapi: 3.0.3
info:
  title: API del Plugin de Transferencia Bancaria (TED)
  description: >-
    API completa para transferencias bancarias brasileñas (TED OUT, TED IN, P2P)
    a través de la plataforma Lerian, incluyendo iniciación de transferencias,
    procesamiento, seguimiento de estado y cancelación.
  version: 1.1.9
servers:
  - url: https://plugin-br-bank-transfer.sandbox.lerian.net
    description: Sandbox (marcador de posición — aún no disponible para acceso público)
security:
  - BearerAuth: []
tags:
  - name: Transfers API
    description: Endpoints para iniciar, procesar, rastrear y cancelar transferencias.
  - name: Webhooks
    description: >-
      Endpoints para registrar y gestionar suscripciones de webhooks con alcance
      al tenant para eventos de transferencia.
  - name: Webhook DLQ
    description: >-
      Endpoints para inspeccionar y reintentar mensajes de la dead-letter queue
      de webhooks.
paths:
  /v1/transfers/ted-in/poll:
    post:
      tags:
        - Transfers API
      summary: Disparar Poller de TED IN
      description: >-
        Utilice este endpoint para forzar un ciclo inmediato de polling JD
        entrante para el tenant actual. Este es un endpoint operacional
        destinado a acelerar la recepción de mensajes de retorno de JD sin
        esperar el intervalo de polling programado. No requiere el header
        `X-Organization-Id` — el tenant se deriva del contexto autenticado.


        Las reentregas con la misma clave reproducen la respuesta en caché en
        lugar de drenar JD nuevamente. Una duplicación en vuelo es rechazada con
        409 por el middleware de idempotencia a nivel de ruta.
      operationId: triggerTEDInPoller
      parameters:
        - $ref: '#/components/parameters/XIdempotencyKey'
      responses:
        '200':
          description: >-
            Indica que el ciclo de polling se completó. El campo `outcome`
            reporta el resultado del ciclo: `success`, `empty`,
            `skipped_outside_window`, `skipped_busy`, `cancelled` o `error`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TEDInPollResponse'
              examples:
                success:
                  summary: Ciclo drenó 3 mensajes
                  value:
                    outcome: success
                    processed: 3
                empty:
                  summary: Nada para procesar
                  value:
                    outcome: empty
                    processed: 0
                error:
                  summary: El ciclo falló antes de poder resolver el tenant
                  value:
                    outcome: error
                    processed: 0
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: >-
            Indica que no se encontró ningún tenant/configuración de poller para
            el contexto autenticado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          $ref: '#/components/responses/TEDInPollerBusy'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
components:
  parameters:
    XIdempotencyKey:
      name: X-Idempotency
      in: header
      required: true
      description: >-
        Clave de idempotencia requerida para reintentos seguros. Utilice un UUID
        v4 o un identificador de negocio único. Si se envía la misma clave
        nuevamente y la solicitud original ya fue procesada, se devuelve la
        respuesta almacenada en caché.


        Consulte [Reintentos e idempotencia](/es/reference/retries-idempotency)
        para más detalles.
      schema:
        type: string
        maxLength: 255
      example: 019c96a0-aa10-7abc-d1e2-8c9d0e1f2a3b
  schemas:
    TEDInPollResponse:
      type: object
      required:
        - outcome
        - processed
      properties:
        outcome:
          type: string
          enum:
            - success
            - empty
            - skipped_outside_window
            - skipped_busy
            - cancelled
            - error
          description: >-
            Etiqueta del resultado del ciclo. `success` y `empty` son rutas
            felices terminales; `skipped_*` indica que el ciclo no se ejecutó;
            `cancelled` y `error` indican trabajo abortado.
          example: success
        processed:
          type: integer
          minimum: 0
          description: >-
            Número de mensajes entrantes drenados y procesados durante este
            ciclo.
          example: 3
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - service
            - category
            - message
            - requestId
          properties:
            code:
              type: string
              description: >-
                El código de error estable. Los errores del plugin usan el
                formato `BTF-XXXX`; los rechazos de negocio/autenticación de JD
                SPB transmiten el código del proveedor sin modificar (p. ej.
                `AAC90`, `ACE95`, `DVE01`), y los fallos de JD a nivel de
                transporte muestran los marcadores sintéticos `TRANSPORT` o
                `JD_MISSING_CODE`. Haga la coincidencia sobre este valor en
                lugar del estado HTTP.
              example: BTF-0010
            service:
              type: string
              description: El servicio o dominio que produjo el error.
              example: plugin
            category:
              type: string
              description: >-
                Categoría de error legible por máquina utilizada para las
                decisiones de reintento.
              enum:
                - deterministic
                - transient
                - rate_limit
                - plugin
              example: deterministic
            message:
              type: string
              description: Un resumen del error legible por humanos.
              example: >-
                Transfers can only be initiated Monday-Friday between 06:30 and
                17:00 Brasília time
            requestId:
              type: string
              description: >-
                El ID de correlación de la solicitud. Presente incluso cuando
                está vacío.
              example: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
            fields:
              type: object
              additionalProperties: true
              description: >-
                Metadatos estructurados de validación o reintento cuando están
                disponibles. Los detalles de validación a nivel de campo,
                encabezado, ruta y consulta se devuelven todos aquí.
              example:
                currentTime: '2026-02-01T18:30:00-03:00'
                operatingHours: Mon-Fri 06:30-17:00 UTC-3
  responses:
    BadRequest:
      description: >-
        Indica que la solicitud contiene datos de entrada inválidos. Verifique
        los detalles del campo para errores de validación específicos.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            invalidInput:
              summary: Validation error
              value:
                error:
                  code: BTF-0001
                  service: plugin
                  category: deterministic
                  message: >-
                    The request contains invalid fields. Check the field details
                    below.
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
                  fields:
                    recipientIspb: must be 8 digits
                    amount: must be positive
    Unauthorized:
      description: Indica que la solicitud no tiene un token de autenticación válido.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            unauthorized:
              summary: Missing authorization
              value:
                error:
                  code: BTF-0401
                  service: plugin
                  category: deterministic
                  message: Missing or invalid authentication token
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
    Forbidden:
      description: >-
        Indica que el llamador está autenticado pero carece de permiso para esta
        operación, o el tenant no está licenciado para este endpoint.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            notLicensed:
              summary: Tenant not licensed
              value:
                error:
                  code: BTF-0403
                  service: plugin
                  category: deterministic
                  message: Tenant is not licensed to use this endpoint
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
            permissionDenied:
              summary: Caller lacks permission
              value:
                error:
                  code: BTF-0405
                  service: plugin
                  category: deterministic
                  message: Caller lacks permission for this resource
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
    TEDInPollerBusy:
      description: >-
        Indica que otro ciclo de polling o reprocesamiento de TED IN ya está en
        curso para este tenant.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            busy:
              summary: Cycle already in progress
              value:
                error:
                  code: BTF-0107
                  service: plugin
                  category: transient
                  message: ted in poll cycle already in progress
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
    RateLimitExceeded:
      description: >-
        Indica que se ha excedido el límite de solicitudes. Reintente después
        del número de segundos especificado en el encabezado Retry-After.
      headers:
        Retry-After:
          description: Segundos hasta que se restablezca el límite de solicitudes
          schema:
            type: integer
            example: 60
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            rateLimitExceeded:
              summary: Too many requests
              value:
                error:
                  code: BTF-0429
                  service: plugin
                  category: rate_limit
                  message: >-
                    Too many requests. Retry after the interval indicated by the
                    `Retry-After` header.
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
              description: >
                Las respuestas de límite de tasa usan el código dedicado
                `BTF-0429` con la categoría `rate_limit`. Los clientes deben
                aplicar backoff usando el estado HTTP `429` y el encabezado
                `Retry-After`.
    InternalServerError:
      description: Indica que ocurrió un error interno inesperado.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            internalError:
              summary: Internal error
              value:
                error:
                  code: BTF-9000
                  service: plugin
                  category: plugin
                  message: Unexpected error while processing the request
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
    ServiceUnavailable:
      description: >-
        Indica que un servicio externo (CRM, JD SPB, Midaz o Fees) no está
        disponible temporalmente.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            crmUnavailable:
              summary: CRM service down
              value:
                error:
                  code: BTF-0502
                  service: crm
                  category: transient
                  message: >-
                    Unable to validate account. The CRM service is temporarily
                    unavailable. Try again later.
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
            jdUnavailable:
              summary: JD SPB unavailable
              value:
                error:
                  code: TRANSPORT
                  service: jd_spb
                  category: transient
                  message: >-
                    Unable to submit transfer. The JD SPB service is temporarily
                    unavailable. Try again later.
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
            midazUnavailable:
              summary: Midaz ledger unavailable
              value:
                error:
                  code: BTF-2000
                  service: midaz
                  category: transient
                  message: >-
                    Unable to process transfer. The Midaz ledger service is
                    temporarily unavailable. Try again later.
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
            feeServiceUnavailable:
              summary: Fee service unavailable (fail-closed mode)
              value:
                error:
                  code: BTF-3000
                  service: fees
                  category: transient
                  message: >-
                    Unable to calculate fee. The fee service is temporarily
                    unavailable. Try again later.
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
            dlqInspectorUnavailable:
              summary: DLQ inspector not configured
              value:
                error:
                  code: BTF-9005
                  service: plugin
                  category: deterministic
                  message: DLQ inspector is not configured
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
    GatewayTimeout:
      description: >-
        Indica que la operación upstream no se completó antes del deadline de la
        solicitud.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            timeout:
              summary: Drain exceeded deadline
              value:
                error:
                  code: BTF-9000
                  service: plugin
                  category: plugin
                  message: 'trigger ted in poller: request timed out'
                  requestId: 6d3e2a68-1f2b-4c3d-9e4f-5a6b7c8d9e0f
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Autenticación mediante token JWT Bearer. El tenantId se deriva del token
        bearer o del contexto autenticado de la solicitud y no se proporciona a
        través de X-Organization-Id.

````