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

# Solicitar rescate

> Borrador: especificación en curso. Los endpoints y campos pueden cambiar.

Solicita un rescate de USDC a una billetera vinculada de la empresa. El rescate
comienza como `pendente` y requiere aprobación. `Idempotency-Key` es obligatorio.
Scope: `propose`.


> [!WARNING]
>
> Borrador: especificación en curso. Los endpoints y campos pueden cambiar.


## OpenAPI

````yaml /es/api/openapi.yaml post /resgates
openapi: 3.1.0
info:
  title: TESA API
  version: 0.2.0-rascunho
  description: >
    **Borrador: especificación en curso. Los endpoints y campos pueden
    cambiar.**


    API del software de tesorería B2B de TESA. El USDC ingresa mediante CCTP de
    Circle

    (Ethereum y Solana) y se asigna a los Treasuries tokenizados (USDY y BUIDL)

    que define la política de la empresa. TESA no recomienda asignaciones, no
    administra

    portafolios ni ejecuta órdenes en nombre de la empresa: el software prepara
    las

    transacciones y la empresa las aprueba y las firma.

    La API es no custodial: nunca recibe una clave privada ni una transacción
    firmada.

    Devuelve transacciones sin firmar y solicitudes de aprobación, y quien firma
    es la

    empresa o su custodio.


    Las rutas de los recursos, los nombres de los campos, los nombres de los
    eventos y los

    códigos de error están en portugués por diseño. Los montos son cadenas
    decimales de USDC

    con dos decimales, las fechas están en ISO 8601 UTC y las listas usan
    paginación por

    cursor (`limite` y `apos`). Todos los valores de ejemplo son ilustrativos.
  contact:
    name: TESA
    email: contact@t3sa.com
    url: https://t3sa.com
servers:
  - url: https://api.t3sa.com/v1
    description: Producción (URL propuesta, aún no disponible)
  - url: https://sandbox.api.t3sa.com/v1
    description: Sandbox (URL propuesta, aún no disponible)
security:
  - bearerAuth: []
tags:
  - name: Organización
    description: La empresa cliente, titular de todas las claves y recursos.
  - name: Carteras
    description: >-
      Billeteras de la empresa vinculadas por dirección pública. Ninguna clave
      pasa por la API.
  - name: Posiciones
    description: Una instantánea de la posición de caja, igual a la del panel.
  - name: Política de asignación
    description: >-
      Activos, proporciones y reglas de rebalanceo definidos y aprobados por la
      empresa. TESA no recomienda asignaciones.
  - name: Propuestas
    description: >-
      Transacciones que el software prepara cuando se cumple una regla de la
      política de la empresa, o por solicitud de la propia empresa. Solo se
      ejecutan con la aprobación y la firma de la empresa.
  - name: Rescates
    description: Devolución de saldo en USDC a una billetera vinculada de la empresa.
  - name: Registros
    description: Pista de auditoría on-chain, con el hash de cada transacción.
  - name: Rendimiento y uso
    description: >-
      Rendimiento calculado por período, solo informativo, y facturas de uso de
      la API. No se cobra nada sobre saldo, rendimiento ni capital principal.
  - name: Webhooks
    description: Destinos que reciben los eventos de TESA.
paths:
  /resgates:
    post:
      tags:
        - Rescates
      summary: Solicitar rescate
      description: >
        Borrador: especificación en curso. Los endpoints y campos pueden
        cambiar.


        Solicita un rescate de USDC a una billetera vinculada de la empresa. El
        rescate

        comienza como `pendente` y requiere aprobación. `Idempotency-Key` es
        obligatorio.

        Scope: `propose`.
      operationId: criarResgate
      parameters:
        - $ref: '#/components/parameters/IdempotencyKeyObrigatorio'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResgateCriar'
            example:
              valor: '150000.00'
              carteira_destino_id: cart_3k9d
              referencia_interna: folha-2026-09
      responses:
        '201':
          description: Rescate creado, pendiente de aprobación.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Resgate'
              example:
                id: res_4t7x
                valor: '150000.00'
                carteira_destino_id: cart_3k9d
                referencia_interna: folha-2026-09
                status: pendente
                transacoes: []
                criado_em: '2026-09-01T14:05:00Z'
                concluido_em: null
        '400':
          $ref: '#/components/responses/RequisicaoInvalida'
        '401':
          $ref: '#/components/responses/NaoAutenticado'
        '403':
          $ref: '#/components/responses/SemPermissao'
        '409':
          $ref: '#/components/responses/Conflito'
        '422':
          $ref: '#/components/responses/NaoProcessavel'
      security:
        - bearerAuth: []
        - bearerAuth: []
          tesaTimestamp: []
          tesaSignature: []
components:
  parameters:
    IdempotencyKeyObrigatorio:
      name: Idempotency-Key
      in: header
      required: true
      description: >-
        Obligatorio para esta operación. Una falla de red no debe crear dos
        operaciones.
      schema:
        type: string
        format: uuid
  schemas:
    ResgateCriar:
      type: object
      required:
        - valor
        - carteira_destino_id
      properties:
        valor:
          $ref: '#/components/schemas/Valor'
        carteira_destino_id:
          type: string
          description: >-
            Billetera vinculada que recibe el USDC. Los rescates solo se envían
            a billeteras propias de la empresa.
        referencia_interna:
          type: string
          description: Texto libre para conciliación, como el lote de pagos en el ERP.
    Resgate:
      type: object
      properties:
        id:
          type: string
          examples:
            - res_4t7x
        valor:
          $ref: '#/components/schemas/Valor'
        carteira_destino_id:
          type: string
        referencia_interna:
          type:
            - string
            - 'null'
        status:
          $ref: '#/components/schemas/StatusResgate'
        transacoes:
          type: array
          items:
            $ref: '#/components/schemas/Transacao'
        criado_em:
          type: string
          format: date-time
        concluido_em:
          type:
            - string
            - 'null'
          format: date-time
    Valor:
      type: string
      pattern: ^\d+\.\d{2}$
      description: Monto en USDC, una cadena decimal con dos decimales.
      examples:
        - '842110.00'
    StatusResgate:
      type: string
      enum:
        - pendente
        - aprovado
        - aguardando_assinatura
        - concluido
        - falhou
    Transacao:
      type: object
      description: >-
        Transacción sin firmar, entregada al custodio de la empresa para su
        firma.
      properties:
        id:
          type: string
          examples:
            - tx_01
        rede:
          $ref: '#/components/schemas/Rede'
        carteira_id:
          type: string
        status:
          type: string
          enum:
            - aguardando_assinatura
            - transmitida
            - confirmada
            - falhou
        payload_nao_assinado:
          type: string
          examples:
            - 0x02f8...
        tx_hash:
          type:
            - string
            - 'null'
    Erro:
      type: object
      properties:
        erro:
          type: object
          properties:
            codigo:
              type: string
              examples:
                - saldo_insuficiente
            mensagem:
              type: string
            campo:
              type:
                - string
                - 'null'
            requisicao_id:
              type: string
              examples:
                - req_9d8c7b
    Rede:
      type: string
      enum:
        - ethereum
        - solana
  responses:
    RequisicaoInvalida:
      description: Cuerpo malformado o parámetro ausente (`requisicao_invalida`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
    NaoAutenticado:
      description: Clave ausente, inválida o revocada, o firma HMAC inválida.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
    SemPermissao:
      description: Scope insuficiente o IP fuera de la lista de permitidos.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
    Conflito:
      description: Conflicto de idempotencia o acción incompatible con el estado actual.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
    NaoProcessavel:
      description: >-
        Regla de negocio incumplida, como saldo insuficiente o política
        inválida.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Erro'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        La clave de API de la organización (`tesa_live_...` en producción,
        `tesa_test_...` en el sandbox).
    tesaTimestamp:
      type: apiKey
      in: header
      name: Tesa-Timestamp
      description: >-
        Opcional en la propuesta actual. Hora de la solicitud en segundos Unix,
        utilizada en la firma HMAC.
    tesaSignature:
      type: apiKey
      in: header
      name: Tesa-Signature
      description: >-
        Opcional en la propuesta actual. HMAC-SHA256 codificado en hexadecimal
        del mensaje canónico (timestamp, método, ruta y cuerpo sin procesar).

````

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