cURL
curl --request GET \
--url https://api.grainfinance.co/v1/customers/{customerId}/dual-hedges \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.grainfinance.co/v1/customers/{customerId}/dual-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}/dual-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}/dual-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}/dual-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}/dual-hedges")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.grainfinance.co/v1/customers/{customerId}/dual-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{
"dualHedges": [
{
"id": "bf77890b-17e2-48a1-9198-707df23eb127",
"issuedAt": "2023-01-18",
"customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
"functionalCurrency": "EUR",
"fromCurrency": "MXN",
"toCurrency": "USD",
"rate": 20.616512,
"hedges": [
{
"id": "8173b9a7-ee61-413e-b9e3-7c04b2a067c5",
"customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
"status": "Active",
"transactionId": "4d78ac65-2c3f-47e2-8bf3-3f76124e9d27",
"externalTransactionId": "780231b3ae0d7e9e5097nd89",
"fromCurrency": "MXN",
"toCurrency": "EUR",
"externalCustomerId": "630231b3ae0d7e9e5097ad35",
"toCurrencyAmount": 1000,
"fromCurrencyAmount": 22850,
"fixedSide": "fromCurrencyAmount",
"initialCollateralAmount": 1142.5,
"quote": 22.85,
"externalMarkupPct": null,
"acceptedAtTs": 1659625088,
"issuedAt": "2023-01-18",
"endAt": "2023-02-20",
"updatedAt": "2023-02-20",
"cancelledAt": null,
"initialCollateralReceivedAt": "2023-01-20",
"fundsReceivedAt": null,
"completedAt": null,
"completedAtTs": null,
"overdueAt": "2023-02-20",
"settlementAt": "2023-02-20",
"settlementType": "full",
"adjustedMtmChangePct": 1.25,
"adjustedMtmChangeTs": 1674057600,
"spotRate": 22.71
},
{
"id": "5e89bd76-3d4f-58e3-9cf4-4f87235e0e38",
"customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
"status": "Active",
"transactionId": "4d78ac65-2c3f-47e2-8bf3-3f76124e9d27",
"externalTransactionId": "780231b3ae0d7e9e5097nd89",
"fromCurrency": "EUR",
"toCurrency": "USD",
"externalCustomerId": "630231b3ae0d7e9e5097ad35",
"toCurrencyAmount": 1108.27,
"fromCurrencyAmount": 1000,
"fixedSide": "toCurrencyAmount",
"initialCollateralAmount": 50,
"quote": 0.9024,
"externalMarkupPct": null,
"acceptedAtTs": 1659625088,
"issuedAt": "2023-01-18",
"endAt": "2023-02-23",
"updatedAt": "2023-02-23",
"cancelledAt": null,
"initialCollateralReceivedAt": "2023-01-20",
"fundsReceivedAt": null,
"completedAt": null,
"completedAtTs": null,
"overdueAt": "2023-02-23",
"settlementAt": "2023-02-23",
"settlementType": "full",
"adjustedMtmChangePct": 0.85,
"adjustedMtmChangeTs": 1674057600,
"spotRate": 0.9091
}
]
}
],
"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"
}Dual Hedges
List Dual Hedges
Lists all dual hedge transactions for the partner, including both hedge legs. Supports filtering by creation or update date.
GET
/
customers
/
{customerId}
/
dual-hedges
cURL
curl --request GET \
--url https://api.grainfinance.co/v1/customers/{customerId}/dual-hedges \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.grainfinance.co/v1/customers/{customerId}/dual-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}/dual-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}/dual-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}/dual-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}/dual-hedges")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.grainfinance.co/v1/customers/{customerId}/dual-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{
"dualHedges": [
{
"id": "bf77890b-17e2-48a1-9198-707df23eb127",
"issuedAt": "2023-01-18",
"customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
"functionalCurrency": "EUR",
"fromCurrency": "MXN",
"toCurrency": "USD",
"rate": 20.616512,
"hedges": [
{
"id": "8173b9a7-ee61-413e-b9e3-7c04b2a067c5",
"customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
"status": "Active",
"transactionId": "4d78ac65-2c3f-47e2-8bf3-3f76124e9d27",
"externalTransactionId": "780231b3ae0d7e9e5097nd89",
"fromCurrency": "MXN",
"toCurrency": "EUR",
"externalCustomerId": "630231b3ae0d7e9e5097ad35",
"toCurrencyAmount": 1000,
"fromCurrencyAmount": 22850,
"fixedSide": "fromCurrencyAmount",
"initialCollateralAmount": 1142.5,
"quote": 22.85,
"externalMarkupPct": null,
"acceptedAtTs": 1659625088,
"issuedAt": "2023-01-18",
"endAt": "2023-02-20",
"updatedAt": "2023-02-20",
"cancelledAt": null,
"initialCollateralReceivedAt": "2023-01-20",
"fundsReceivedAt": null,
"completedAt": null,
"completedAtTs": null,
"overdueAt": "2023-02-20",
"settlementAt": "2023-02-20",
"settlementType": "full",
"adjustedMtmChangePct": 1.25,
"adjustedMtmChangeTs": 1674057600,
"spotRate": 22.71
},
{
"id": "5e89bd76-3d4f-58e3-9cf4-4f87235e0e38",
"customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
"status": "Active",
"transactionId": "4d78ac65-2c3f-47e2-8bf3-3f76124e9d27",
"externalTransactionId": "780231b3ae0d7e9e5097nd89",
"fromCurrency": "EUR",
"toCurrency": "USD",
"externalCustomerId": "630231b3ae0d7e9e5097ad35",
"toCurrencyAmount": 1108.27,
"fromCurrencyAmount": 1000,
"fixedSide": "toCurrencyAmount",
"initialCollateralAmount": 50,
"quote": 0.9024,
"externalMarkupPct": null,
"acceptedAtTs": 1659625088,
"issuedAt": "2023-01-18",
"endAt": "2023-02-23",
"updatedAt": "2023-02-23",
"cancelledAt": null,
"initialCollateralReceivedAt": "2023-01-20",
"fundsReceivedAt": null,
"completedAt": null,
"completedAtTs": null,
"overdueAt": "2023-02-23",
"settlementAt": "2023-02-23",
"settlementType": "full",
"adjustedMtmChangePct": 0.85,
"adjustedMtmChangeTs": 1674057600,
"spotRate": 0.9091
}
]
}
],
"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.
Query Parameters
Page number indicating which set of items to return The page indicating which set of items are returned
Required range:
x >= 1number of items in a page
Required range:
1 <= x <= 100Creation date filter - only dual hedges created on this date will be returned. Format: YYYY-MM-DD
Update date filter - only dual hedges updated on this date will be returned. Format: YYYY-MM-DD
⌘I