> ## 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 crear claims

> Guia del proceso de CLAIMS

Cuando el operador del banco originador crea un **Claim**, se genera una acción con tipo `CLAIM` a través del API. Esta acción contendrá los detalles del motivo por el cual fue creada dentro del objeto `labels.reason`.

Por ejemplo, si la transferencia tuvo un crédito doble o un valor incorrecto, el motivo específico será incluido en esa propiedad del `label`, lo que permite a los bancos destino validar y responder adecuadamente a la solicitud de devolución.

```json theme={null}
{
  "action_id": "0bac12c0-53a4-4dd8-b284-41af1a8311ed",
  "amount": "150000.00",
  "source": "<target-bank-signer>",
  "target": "<source-bank-signer>",
  "symbol": "$tin",
  "tx_ref": "<transferId>",
  "labels": {
    "type": "CLAIM",
    "reason": {
      "code": "<claim-code>",
      "description": "<claim-description>"
    **}**,
    "rejectDescription": "<reject-claim-reason>",
    ****"status": "<reject-claim-status>",
    "domain": "tin",
    "hash": "<hash>",
    "created": "<created-date>",
    "updated": "<updated-date>"
  },
  "snapshot": {
    "source": {
      "wallet": { ... },
      "signer": { ... }
    },
    "target": {
      "wallet": { ... },
      "signer": { ... }
    },
    "symbol": {
      "wallet": { ... },
      "signer": { ... }
    }
  },
  "error": {
    "code": <error code>,
    "message": "<error message>"
  }
}
```

## Aceptación y rechazo de Claims

### Aceptación

Una vez que el operador del banco destinatario acepta la acción de tipo `CLAIM`, el Dashboard invoca el endpoint:

POST /v1/action/{action_claim_id}/accept

La API enviará la acción de tipo `CLAIM` al endpoint `/transfer` del banco destinatario para ser firmada. Según la respuesta del banco, pueden ocurrir dos casos:

**Proceso exitoso de firma:**

* El estado de la transferencia cambiará de `COMPLETED` a `REJECTED`.
* El estado de la acción cambiará a `COMPLETED`.
* El objeto `labels.reason` de la acción se guardará dentro del objeto de error de la transferencia.
* Se invocarán los endpoints `/status` tanto del banco originador como del banco destinatario.

**Proceso fallido de firma:**

* El error se guardará dentro del objeto de error de la acción `CLAIM`.
* El estado de la transferencia se mantendrá en `COMPLETED`.
* El estado de la acción cambiará a `ERROR`.

### Rechazo

Si el operador del banco destinatario rechaza la acción `CLAIM`, la entidad financiera debe especificar el motivo del rechazo. Este será guardado en `labels.rejectDescription`.

En este caso:

* El estado de la transferencia permanece en `COMPLETED`.
* La acción `CLAIM` cambia su estado a `REJECTED`.
* El endpoint `/status` **no es invocado**.
* El objeto de error tendrá la siguiente estructura:

```json theme={null}
{
  "error": {
    "code": 0,
    "message": "Success"
  }
}
```

Finalmente, el Dashboard llamará al endpoint: POST /v1/action/{action_claim_id} para actualizar los campos `labels.status` y `labels.rejectDescription`.
