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

# Cómo Enviar Marcas de Tiempo

> Cómo enviar Marcas de Tiempo al DICE

<Info>
  Aunque la regulación exige únicamente al banco originador reportar las marcas de tiempo finales, solicitamos que tanto el banco origen como el banco destino las reporten para mantener consistencia en el proceso.

  Para reportar estas marcas de tiempo finales del procesamiento de una transferencia, se ha agregado un nuevo endpoint:

  **POST /v1/transfer/:txRef/timestamps**

  Las marcas de tiempo a enviar mantienen los mismos nombres utilizados en los casos anteriores:

  * `received` → momento en que el participante recibió la notificación de estado final por parte de Transfiya.
  * `dispatched` → momento en que el participante notificó al usuario sobre el resultado de la transferencia.
</Info>

```mermaid theme={null}
sequenceDiagram
	autonumber
	participant su as Usuario Origen
	participant sb as Banco Origen
	participant ty as Transfiya
  participant tb as Banco Destino
  participant monitor as Monitor+
  participant mb as Puente MOL
  participant mol as MOL

  su ->> +sb: Crear transferencia
  sb ->> +ty: Crear transferencia
  ty ->> ty: Validar reglas de negocio
  ty -->> -sb: Transferencia creada
  sb -->> -su: Transferencia creada
  
  alt débito
    ty ->> +sb: Llamar a débito
    sb ->> +ty: Crear acción UPLOAD
    ty -->> -sb: Respuesta de acción
    sb -->> -ty: Respuesta de débito
    sb ->> sb: Debitar cuenta origen
    sb ->> +ty: Actualizar acción con tx_id
    ty -->> -sb: Acción actualizada
    sb ->> +ty: Enviar IOU
    ty -->> -sb: Respuesta de IOU
    sb ->> ty: Continuar transferencia
  end
  
  ty ->> +monitor: Iniciar Monitor+
  monitor -->> -ty: Respuesta de Monitor+
  
  ty ->> +mb: Reservar fondos
  activate mb
  mb ->> mol: Reservar fondos (pacs.008)
  activate mol
  mol ->> mb: Acreditar destino (pacs.008)
  activate mb
  mb ->> ty: Continuar transferencia<br />(crédito MOL)
  
  alt aceptación
    ty ->> tb: Notificar estado PENDIENTE
    tb -->> ty: Respuesta
    tb ->> tb: Validar datos destino
    tb ->> ty: Aceptar transferencia
  end
  
  ty ->> mb: Confirmar crédito
  mb -->> mol: Confirmar crédito (pacs.002)
  deactivate mb
  mol -->> mb: Confirmación (pacs.002)
  deactivate mol
  mb ->> ty: Continuar transferencia<br />(reserva MOL)
  deactivate mb
  
  ty ->> ty: Esperar confirmación de liquidación
  mol ->> +mb: Confirmación de liquidación (pacs.002)
  mb ->> -ty: Continuar transferencia<br />(MOL liquidado)
  
  alt acción
    ty ->> +sb: Llamar a acción
    sb ->> +ty: Enviar IOU
    ty -->> -sb: Respuesta de IOU
    sb -->> -ty: Respuesta de acción
  end
  
  alt crédito
    ty ->> +tb: Llamar a crédito
    tb ->> +ty: Crear acción DOWNLOAD
    ty -->> -tb: Respuesta de acción
    tb -->> -ty: Respuesta de crédito
    tb ->> tb: Acreditar usuario destino
    tb ->> +ty: Actualizar acción con tx_id
    ty -->> -tb: Acción actualizada
    tb ->> +ty: Enviar IOU
    ty -->> -tb: Respuesta de IOU
    tb ->> ty: Continuar transferencia
  end
  
  alt estado completado
    ty ->> +sb: Llamar a estado (COMPLETADO)
    sb -->> -ty: Respuesta de estado
    sb ->> sb: Notificar a usuario origen
    sb ->> +ty: Reportar timestamps finales
    ty -->> -sb: Respuesta de timestamps
    
    ty ->> +tb: Llamar a estado (COMPLETADO)
    tb -->> -ty: Respuesta de estado
    tb ->> tb: Notificar a usuario destino
    tb ->> +ty: Reportar timestamps finales
    ty -->> -tb: Respuesta de timestamps
  end
  
  ty ->> +monitor: Finalizar Monitor+
  monitor -->> -ty: Respuesta de Monitor+
```

<Info>
  Los timestamps finales

  son reportados por los bancos origen y destino en los pasos 50

  y 55

  .
</Info>

### Ejemplo de API

**POST /v1/transfer/:txRef/timestamps**

<Tabs>
  <Tab title="Request">
    ```json theme={null}
    curl -X POST \
     -H "x-api-key: <API_KEY>" \
     -H "Authorization: Bearer <TOKEN>" \
     -H "Content-Type: application/json" \
     -d '{
      "received": "2024-10-11T11:59:22.241-05:00",
      "dispatched": "2024-10-11T11:59:22.517-05:00"
     }' "<TRANSFIYA URL>/v1/transfer/Lf13jsK83omPv3bOt/timestamps"
    ```
  </Tab>

  <Tab title="Response">
    ```json theme={null}
    {
      "error": {
        "code": 0,
        "message": "Success"
      }
    }
    ```
  </Tab>
</Tabs>

## Codigos de Error

| Código de error | Descripción                                                   | HTTP Status |
| --------------- | ------------------------------------------------------------- | ----------- |
| 99              | Unexpected server error                                       | 400         |
| 100             | You don't have permissions to access this method              | 403         |
| 101             | Unauthorized request, invalid or expired token                | 401         |
| 118             | Resource schema validation error, field format is not correct | 400         |
| 121             | Signer not found in database                                  | 400         |
| 123             | Domain rules error, timestamps are not in the expected range  | 400         |
