curl --request GET \
--url https://api.grainfinance.co/v1/customers/{customerId}/hedges \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.grainfinance.co/v1/customers/{customerId}/hedges"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.grainfinance.co/v1/customers/{customerId}/hedges', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.grainfinance.co/v1/customers/{customerId}/hedges",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.grainfinance.co/v1/customers/{customerId}/hedges"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.grainfinance.co/v1/customers/{customerId}/hedges")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.grainfinance.co/v1/customers/{customerId}/hedges")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"hedges": [
{
"id": "8173b9a7-ee61-413e-b9e3-7c04b2a067c5",
"customerId": "1b0ada1e-fa1b-4cfe-a553-01b340c5650e",
"status": "Active",
"fixedSide": "toCurrencyAmount",
"transactionId": "4d78ac65-2c3f-47e2-8bf3-3f76124e9d27",
"externalTransactionId": "780231b3ae0d7e9e5097nd89",
"externalCustomerId": "630231b3ae0d7e9e5097ad35",
"fromCurrency": "MXN",
"toCurrency": "USD",
"settlementType": "full",
"initialCollateralAmount": 1608.09,
"quote": 20.6165,
"externalMarkupPct": 1,
"issuedAt": "2023-01-18",
"acceptedAtTs": 1659625088,
"fromCurrencyAmount": 32161.8,
"toCurrencyAmount": 1560,
"endAt": "2023-02-23",
"settlementAt": "2023-02-23",
"updatedAt": "2023-02-23",
"cancelledAt": "2023-02-23",
"initialCollateralReceivedAt": "2023-01-20",
"fundsReceivedAt": "2023-02-23",
"completedAt": "2023-02-23",
"completedAtTs": 1659625090,
"overdueAt": "2023-02-23",
"adjustedMtmChangePct": 1.25,
"adjustedMtmChangeTs": 1674057600,
"contractType": "flexible",
"originalFromCurrencyAmount": 30924.75,
"originalToCurrencyAmount": 1500,
"originalQuote": 20.6165,
"originalEndAt": "2023-02-23",
"collateralAmount": 408.09,
"totalNumberOfDrawdowns": 3
}
],
"pagination": {
"page": 2,
"perPage": 50.5,
"totalResults": 123
}
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}List Hedges
Retrieves all hedges associated with the given customer.
curl --request GET \
--url https://api.grainfinance.co/v1/customers/{customerId}/hedges \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.grainfinance.co/v1/customers/{customerId}/hedges"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.grainfinance.co/v1/customers/{customerId}/hedges', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.grainfinance.co/v1/customers/{customerId}/hedges",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.grainfinance.co/v1/customers/{customerId}/hedges"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.grainfinance.co/v1/customers/{customerId}/hedges")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.grainfinance.co/v1/customers/{customerId}/hedges")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"hedges": [
{
"id": "8173b9a7-ee61-413e-b9e3-7c04b2a067c5",
"customerId": "1b0ada1e-fa1b-4cfe-a553-01b340c5650e",
"status": "Active",
"fixedSide": "toCurrencyAmount",
"transactionId": "4d78ac65-2c3f-47e2-8bf3-3f76124e9d27",
"externalTransactionId": "780231b3ae0d7e9e5097nd89",
"externalCustomerId": "630231b3ae0d7e9e5097ad35",
"fromCurrency": "MXN",
"toCurrency": "USD",
"settlementType": "full",
"initialCollateralAmount": 1608.09,
"quote": 20.6165,
"externalMarkupPct": 1,
"issuedAt": "2023-01-18",
"acceptedAtTs": 1659625088,
"fromCurrencyAmount": 32161.8,
"toCurrencyAmount": 1560,
"endAt": "2023-02-23",
"settlementAt": "2023-02-23",
"updatedAt": "2023-02-23",
"cancelledAt": "2023-02-23",
"initialCollateralReceivedAt": "2023-01-20",
"fundsReceivedAt": "2023-02-23",
"completedAt": "2023-02-23",
"completedAtTs": 1659625090,
"overdueAt": "2023-02-23",
"adjustedMtmChangePct": 1.25,
"adjustedMtmChangeTs": 1674057600,
"contractType": "flexible",
"originalFromCurrencyAmount": 30924.75,
"originalToCurrencyAmount": 1500,
"originalQuote": 20.6165,
"originalEndAt": "2023-02-23",
"collateralAmount": 408.09,
"totalNumberOfDrawdowns": 3
}
],
"pagination": {
"page": 2,
"perPage": 50.5,
"totalResults": 123
}
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}{
"message": "Can't perform this action",
"reason": "Supplied object is in *Cancelled* state, which prevents performing this action"
}Authorizations
Basic authentication using the partner API keys from https://console.grainfinance.co/keys
Path Parameters
The id of the customer within the Grain platform.
[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}Query Parameters
page number indicating which set of items to return The page indicating which set of items are returned
x >= 1number of items in a page
1 <= x <= 100Filter hedges by one or more statuses.
The status of a hedge as displayed in the Partners API.
Mirrors the internal hedge statuses that are exposed to partners; the internal
terminal Terminated status is intentionally omitted, as terminated hedges are
never returned by the Partners API.
Active, Cancelled, Completed, InProcess, Overdue Filter hedges by the external transaction id of their linked transaction (exact match).
Response
Hedges List for Customer
A response containing a list of hedges matching the search criteria.