# 트랜잭션 상태 조회

## 요청 받은 자산 이전 내역의 블록체인 트랜잭션의 상태를 반환합니다.

<mark style="color:green;">`POST`</mark> `/v1/vasp/transfer/status`

때때로 자산을 수신한 VASP는 자산을 전송한 VASP의 블록체인 트랜잭션의 상태를 알아야 할 필요가 생길 수 있습니다.

이 API 는 상대 VASP 의 자산 이전 내역을 조회하는 API 가 아니며, 수취 VASP 가 송금 VASP 의 블록체인 트랜잭션 상태를 알기 위한 API 로 다음과 같은 경우에 사용할 수 있습니다.

* 수취 VASP 가 블록체인 상에 자산 이전 트랜잭션이 발생하고 사용자의 자산 정보에 반영하기 전에, 자신의 자산 이전 정보의 상태가 `confirmed` 가 아닐 때, 송신측 VASP 에 해당 자산 이전 건의 트랜잭션 상태를 요청하고 싶은 경우
* '자산 이전 허가 요청' 에 대한 응답을 보냈는데, 자산 이전이 실행되지 않을 때, 송신측 VASP 에 해당 건의 트랜잭션 상태를 요청하고 싶은 경우

*주의) 기존의 API 명세에서 동작이 변경됐으므로 유의하시기 바랍니다. 자산 이전 내역을 조회하는 것이 아니고 트랜잭션의 상태를 조회하는 API 입니다.*

**API 동작 명세**

1. 요청으로 전달받은 `transferId` 에 해당하는 자산이전 정보를 DB 에서 찾아서 `status` 값과 `txid`, `vout` 을 찾아서 응답합니다.
2. `txid`, `vout` 값은 있을 경우에만 메시지에 추가합니다.

**REQUEST Body Schema: application/jsonRequest**

* transferId(Required): '자산 이전 허가 요청' 에 부여한 UUID 입니다. 해당하는 트랜잭션에 자산 이전 결과를 업데이트합니다.

```
{
  "transferId": "b09c8d00-8da9-11ec-b909-0242ac120002"
}
```

**Response**

*200 OK*

*RESPONSE SCHEMA: application/json*

* transferId(Required): 모든 API 에서 자산 이전 트랜잭션을 구별하기 위한 ID입니다. &#x20;
* status(Required): 자산 이전 트랜잭션의 상태입니다.
  * pending: 어떤 이유에서든 아직 블록체인 트랜잭션을 보내지 않고 대기하고 있는 상태입니다.
  * processing: 블록체인에 트랜잭션을 전송했지만 채굴 대기 중인 상태입니다.
  * wait-confirm: 블록체인 트랜잭션이 채굴이 된 것을 확인했지만 아직 finality 를 확보하지 못한 상태입니다.
  * confirmed: 블록체인 트랜잭션이 채굴되었고 finality 도 확보된 상태입니다.
  * canceled: 블록체인 트랜잭션을 보내지 않고 취소한 상태 혹은 보냈는데 취소한 상태입니다. (영구히 취소된 경우)
* txid(Optional, Required when status is confirmed): 가산 자산 이전에 대해서 생성된 트랜잭션 ID 입니다. 각 블록체인 상에 생성된 정보입니다.
* vout(Optional): utxo타입 코인의 경우 복수의 txid 생성이 가능하여 유일한 txid를 구분하기 위한 vout가 필요

```
{
  "transferId": "b09c8d00-8da9-11ec-b909-0242ac120002",
  "status": "confirmed",
  "txid": "311BFF73D9B7969CCF1042186180159C724FAB59013A7A034A93E5FB9D6BAFE6",
  "vout": ""
}
```
