Exchange Webhook

The Exchange Request Webhook is a special webhook that allows you to receive an exchange request on the order you've created. This is a different webhook from the webhook you use to receive on various events like transaction confirmed, transaction created and transaction failed. As a market provider, you must register one Exchange Request Webhook URL to create order and accept any exchange request.

Create an Exchange Request Webhook URL

Go to the dashboard and register a webhook URL to receive exchange request through this URL. Once you register a webhook URL, there will be a checkbox beside the URL. Check this box to mark the URL as the exchange request webhook URL.

If you unset this checkbox, this will immediately suspend any exchange request webhooks, which means that you will not be able to accept any exchange requests until you recheck this box.

The Exchange Request

When an exchange is requested using your order, Gluwa will make a POST request to the exchange webhook URL for the permission to proceed with the exchange. The following request body is sent with the request.

Attribute

Type

Description

EventType

string

Always "ExchangeRequest"

Type

string

Always "Webhook"

ResourceID

string

Order ID

Conversion

string

The conversion of the exchange.

DestinationAddress

string

The address where the source amount must be sent to.

SourceAmount

string

The amount in source currency that this order will exchange.

Fee

string

The fee amount that must be used to create ReserveTxnSignature, ExecuteTxnSignature and ReclaimTxnSignature

Executor

string

Optional. Required if the source currency is Gluwacoin currency (ex> USD-G, KRW-G). The address that will execute the exchange on your behalf. You need this to sign the reserve transaction signature.

ExpiryBlockNumber

string

Optional. Required if the source currency is Gluwacoin currency (ex> USD-G, KRW-G). The block number where your reserved funds will expire. You need this to create the reserve transaction signature.

After this block number, the exchange will not execute, and you may call reclaim function on the blockchain to release your reserved funds.

ReservedFundsAddress

string

Optional. Required if the source currency is BTC. The address where the source amount must be sent to to reserve your funds for the exchange.

ReservedFundsRedeemScript

string

Optional. Required if the source currency is BTC.

If you want to verify that the request was actually sent from Gluwa, you can check the veracity of the webhook as shown here.

The maker MUST return 200 status code along with the following body to accept the exchange request.

Attribute

Type

Description

Nonce

int

Optional. Required if the source currency is Gluwacoin currency (ex> USD-G, KRW-G). Nonce is an integer used when creating reserve transaction signature. It must increase each time you make any new transactions (transfer, exchange, etc).

SendingAddress

string

The address that funded the source amount.

ReserveTxnSignature

string

Reserve transaction signature used to reserve funds for the exchange.

ExecuteTxnSignature

string

Optional. Required if the source currency BTC. Execute transaction signature used to execute the exchange when your funds are available in the reserve address.

ReclaimTxnSignature

string

Optional. Required if the source currency BTC. Reclaim transaction signature used to return the funds in the reserve address when the exchange fails or expires.

If the maker returns any other response, Gluwa will try to send the same webhook for the maximum of 5 times, before treating the exchange request as declined. If you decline the exchange request 5 times, your order will be canceled automatically.

Receiving Exchange Success and Failed Webhooks

Gluwa will send a webhook when an exchange succeeds or fails. This will be sent to the same webhook URL as the one you use to receive transaction confirmed, transaction created and transaction failed webhooks, NOT to the exchange equest webhook URL.

ExchangeSuccess Event

Attribute

Type

Description

EventType

string

Always "ExchangeSuccess"

Type

string

Always "Webhook"

ResourceID

string

Order ID

OrderAmountRemaining

string

The amount remaining in the order.

Conversion

string

Conversion symbol for the order. See conversion.

SendingAddress

string

The address that will fund the source amount.

ReceivingAddress

string

The address that the exchanged currency will be received.

For example, if the conversion is BtcUsdg, your receiving address must be a USD-G address since your exchanged funds will be sent to that address.

SourceAmount

string

The amount in source currency that this order will exchange.

Price

string

The price the order will use for the exchange. The unit is <exchanged currency>/<source currency>.

ExchangedAmount

string

The exchanged amount in exchanged currency.

ExchangeFailed Event

Attribute

Type

Description

EventType

string

Always "ExchangeFailed"

Type

string

Always "Webhook"

ResourceID

string

Order ID

OrderAmountRemaining

string

The amount remaining in the order.

Conversion

string

Conversion symbol for the order. See conversion.

SendingAddress

string

The address that will fund the source amount.

ReceivingAddress

string

The address that the exchanged currency will be received.

For example, if the conversion is BtcUsdg, your receiving address must be a USD-G address since your exchanged funds will be sent to that address.

SourceAmount

string

The amount in source currency that this order will exchange.

Price

string

The price the order will use for the exchange. The unit is <exchanged currency>/<source currency>.

ExchangedAmount

string

The exchanged amount in exchanged currency.