New Update Quote Endpoint (PATCH /liquidity/rfq)
June 10th, 2024
Release Details
Release Date: June 12th, 2024
Release Type
Informational – Optional action from platforms
Summary
Zero Hash has created a new endpoint: PATCH /liquidity/rfq
. Platforms can use this endpoint to update an existing, non-expired quote. There are 2 required fields:
quote_id
: the id associated with a valid, non-expired quote that was returned from eitherGET or POST /liquidity/rfq
total
: the notional value that you'd like to update the quote to reflect
And one optional object:
fees
: object containing fee dataname
: a string naming the feeamount
: the amount of the fee, denominated in the quoted currency of the original quote
Platforms should use the same execution endpoints, POST /liquidity/execute
, to execute on the quotes updated via PATCH /liquidity/rfq
.
Validations
- If the platform omits the
quote_id
, we’ll return an error, "quote_id is a required field" - If the platform sends a
quote_id
that is valid but expired, we’ll return an error, "quoted_id has expired" - If the platform sends a
fees
object containing a name that is not an exact match to one from the original quote, we’ll return an error, “No fee with the submitted ‘name’ exists on this quote” - If the platform sends a
fee
object containing an amount that is non-numerical, we’ll return an error, “amount must be a positive integer”
API Behavior
- Upon a successful
PATCH /liquidity/rfq call
, Zero Hash will function like the following:- The
quote_id
goes unchanged - we’ll keep constant with originalPOST /liquidity/rfq
response - The
expire_ts
goes unchanged - we’ll keep constant with originalPOST /liquidity/rfq
response - The
trade_price
goes unchanged - we’ll keep constant with originalPOST /liquidity/rfq
response - [Rest of the fields go unchanged]
- We’ll update
quantity
to be the new value - We’ll refresh the
request_id
- We’ll change the
total
value to the one provided on the PATCH call
- The
Action Required
PATCH /liquidity/rfq
is available for platforms leveraging our Platform Direct model. If you need clarification of which model your platform is on, please reach out to your Zero Hash rep.
Endpoints Impacted
PATCH /liquidity/rfq
Example Request (zero fees initially)
- Platform (PLAT01) requests a quote on behalf of its customer (CUST01):
POST /liquidity/rfq
- Let's assume PLAT01 is configured for 5 minute quote expiries
{
"side": "buy",
"participant_code": "CUST01",
"underlying": "BTC",
"quoted_currency": "USD",
"total": "1",
"spread": "300",
"fees": [
{
"amount": "0",
"name": "fee_1"
}
]
}
- Zero Hash responds:
{
"message": {
"request_id": "7d6d2a79-c421-4e78-b250-5a43b5da479e",
"participant_code": "PLAT01",
"quoted_currency": "USD",
"side": "buy",
"quantity": "0.00000138",
"price": "724637.6811594203",
"quote_id": "38451f54-6289-45b2-b70c-369bdaefdea4",
"expire_ts": 1717174886754, <-- 5 minute quote
"account_group": "00SCXM",
"account_label": "general",
"obo_participant": {
"participant_code": "CUST01",
"account_group": "PLAT01",
"account_label": "general"
},
"fees": [
{
"amount": "0.00",
"name": "fee_1"
}
]
"underlying": "BTC",
"asset_cost_notional": "100",
"spread_notional": "3.00",
"spread_bps": "300"
}
}
- [some time before the quote expires, say 90 seconds later] The Platform updates the quote via
PATCH /liquidity/rfq
:
{
"quote_id":"38451f54-6289-45b2-b70c-369bdaefdea4"
"total": "100",
"fees": [
{
"amount": "10.00",
"name": "fee_1"
}
]
}
- Zero Hash responds:
{
"message": {
"request_id": "7d6d2a79-c421-4e78-b250-5a43b5da479e",
"participant_code": "PLAT01",
"quoted_currency": "USD",
"side": "buy",
"quantity": "0.0001242", <-- updated quantity
"price": "724637.6811594203", <-- same price
"quote_id": "38451f54-6289-45b2-b70c-369bdaefdea4",
"expire_ts": 1717174886754, <-- same expiration
"account_group": "00SCXM",
"account_label": "general",
"obo_participant": {
"participant_code": "CUST01",
"account_group": "PLAT01",
"account_label": "general"
},
"fees": [
{
"amount": "10.00",
"name": "fee_1"
}
]
"underlying": "BTC",
"asset_cost_notional": "100",
"spread_notional": "3.00",
"spread_bps": "300"
}
}
- Platform executes the quote via
POST /liquidity/execute
:
{
"quote_id": "38451f54-6289-45b2-b70c-369bdaefdea4"
}