Download OpenAPI specification:Download
Quant's Overledger API allows developers to create applications for multiple DLT's using a single standard set of operations and data structures.In order to maintain the security of private keys, most operations have two steps – prepare and execute. The prepare step is the point at which all arguments are specified and standardised payloads are sent. Overledger converts this standard payload into a DLT-specific transaction object. In the execute step, the SDK signs the transaction object that Overledger created and submits it to Overledger to perform the operation
This API uses OAuth 2 with the Client Credential grant flow.
Security Scheme Type | OAuth2 |
---|---|
clientCredentials OAuth Flow | Token URL: https://dev-sandbox-use1-overledger-1.auth.us-east-1.amazoncognito.com/token Scopes:
|
Takes a request ID and submits a signed transaction to the requested DLT.
overledger/read.scope
) All good!
Unauthorised
Not Found
Something went wrong on our side
Execute Transaction
{- "requestId": "79763168-a4f9-42bf-9f10-2e08491136a7",
- "signed": "0xf8a9398501ef4f86e682a0c294f9cd6c86992fce1481dbc4bdb7e1b101c1e8cee280b844a9059cbb000000000000000000000000d8b31b65878a6b1a6caf9f4819c1a42d68a7a11600000000000000000000000000000000000000000000000000038d7ea4c6800029a088680bffd2eb74053e968ac8bcd1f76beaa61b353d8616a8cc559e57685080bea07a77b7591f09290fbb9cda5263471e8a9ca46f4c7b30d6a4885e583771d809f5"
}
Bitcoin
{- "urgency": "normal",
- "requestId": "5d4935ae-d395-4cc7-a7e6-3777127cfd09",
- "overledgerTransactionId": "ac71c2f4-ab67-434f-b83a-4514ce10847a",
- "location": {
- "technology": "Bitcoin",
- "network": "Testnet"
}, - "type": "payment",
- "transactionId": "320034aa1ea43541fcdcfa65ef7e127c19935b532bc59f92ad227370011d9cef",
- "status": {
- "code": "TXN1002",
- "description": "The transaction has been successfully broadcasted to the network. The status will next be updated after a sufficient block number has been reached. At this point we can be confident that the transaction will be successful or will have failed.",
- "message": "Transaction is pending.",
- "value": "PENDING",
- "timestamp": "1624007506"
}
}
Transforms a transaction request into a payload ready for signing for the requested DLT and returns a request ID for executing. Supported transaction types in this release are "Payment" (to send payments) and "Smart Contract Invoke" (to invoke arbitrary smart contract functions). Warning: Bitcoin transaction fees will be deducted from the last destination provided in the transaction payment request. If the last destination payment value is not enough to cover the fees, your Bitcoin payment transaction will fail.
overledger/read.scope
) All good!
Bad Request
Unauthorised
Something went wrong on our side
Substrate
{- "urgency": "normal",
- "requestDetails": {
- "overledgerSigningType": "overledger-javascript-library",
- "origin": [
- {
- "originId": "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"
}
], - "destination": [
- {
- "payment": {
- "amount": "0.0000000001",
- "unit": "WND"
}, - "destinationId": "5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y"
}
], - "message": "OVL Transaction Message"
}, - "location": {
- "technology": "Substrate",
- "network": "Polkadot Westend Testnet"
}, - "type": "PAYMENT"
}
Prepare Response
{- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "e566fab4-141d-445e-8c3c-e936c553cc99",
- "dltFee": {
- "amount": "0.000061839000453486",
- "unit": "ETH"
}, - "nativeData": {
- "data": "0xa9059cbb000000000000000000000000d8b31b65878a6b1a6caf9f4819c1a42d68a7a11600000000000000000000000000000000000000000000000000038d7ea4c68000",
- "chainId": 3,
- "gas": "41226",
- "to": "0xF9cd6C86992Fce1481dBc4bDB7E1b101c1e8cEE2",
- "nonce": 122,
- "value": "0",
- "gasPrice": "1500000011"
}
}
Allows advanced developers to submit their own DLT native transactions via Overledger. Returns a request ID for executing a DLT native transaction on the requested DLT
overledger/read.scope
) All good!
Unauthorised
Something went wrong on our side
Native Transaction
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "Native Transaction"
}
Prepare Response
{- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "13765b06-eaf3-4f02-acb4-b7e9da8b0380"
}
Takes a request ID and submits a signed native transaction to the requested DLT
overledger/read.scope
) All good!
Unauthorised
Not Found
Something went wrong on our side
Execute Native Transaction
{- "requestId": "79763168-a4f9-42bf-9f10-2e08491136a7",
- "signed": "0xf8a9398501ef4f86e682a0c294f9cd6c86992fce1481dbc4bdb7e1b101c1e8cee280b844a9059cbb000000000000000000000000d8b31b65878a6b1a6caf9f4819c1a42d68a7a11600000000000000000000000000000000000000000000000000038d7ea4c6800029a088680bffd2eb74053e968ac8bcd1f76beaa61b353d8616a8cc559e57685080bea07a77b7591f09290fbb9cda5263471e8a9ca46f4c7b30d6a4885e583771d809f5"
}
Execute Response
{- "requestId": "242284e2-e53e-4c28-b74c-e5b2c5fa7399",
- "overledgerTransactionId": "dded55c2-a0fb-4e7b-8f95-771332c32507",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "Native Transaction",
- "transactionId": "0x05b4b5cf07013acfed5a2ffbfc51c4d16e920cfbcc86d68ed71a3a418b9a110e",
- "status": {
- "code": "TXN1002",
- "description": "The transaction has been successfully broadcasted to the network. The status will next be updated after a sufficient block number has been reached. At this point we can be confident that the transaction will be successful or will have failed.",
- "message": "Transaction is pending.",
- "value": "PENDING",
- "timestamp": "1624007506"
}
}
Takes a request ID and searches for the transaction on the requested DLT
overledger/read.scope
) All good!
Bad Request
Unauthorised
Not Found
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const query = new URLSearchParams({requestId: 'string'}).toString(); const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/execution/search/transaction?${query}`, { method: 'POST', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
Execute Response
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "PAYMENT",
- "transaction": {
- "signature": [
- "0xb04ffb9b699a1cf1c9d63d07b16a250ba7d682b07556a4267296a09a0e112cd2",
- "0x76352abdb2eca00e0390ba70ec822dd6cf081dff302645da04cc5c60c9ccc685",
- "42"
], - "origin": [
- {
- "sequence": "1143",
- "originId": "0x650a87cfb9165c9f4ccc7b971d971f50f753e761"
}
], - "destination": [
- {
- "destinationId": "0xb3ea4d180f31b4000f2fbcc58a085ef2ffd5a763"
}
], - "totalPaymentAmount": [
- {
- "amount": "0",
- "unit": "ETH"
}
], - "message": "OVL SDK Test",
- "transactionId": "0x124b79341eac1dbe05ad66508d0865ef2b64a2af05087457ea015af1e8b34737",
- "nativeData": {
- "gasRaw": "0x13880",
- "blockHash": "0xf4291d3de8b16499523eea3b164d69918d157a4d2d3a5e6995d7d9e4baf4702c",
- "transactionIndexRaw": "0x2",
- "valueRaw": "0x0",
- "transactionIndex": 2,
- "nonce": 1143,
- "input": "0x4f564c2053444b2054657374",
- "gasPriceRaw": "0x1dcd65000",
- "r": "0xb04ffb9b699a1cf1c9d63d07b16a250ba7d682b07556a4267296a09a0e112cd2",
- "s": "0x76352abdb2eca00e0390ba70ec822dd6cf081dff302645da04cc5c60c9ccc685",
- "blockNumberRaw": "0x99bff5",
- "nonceRaw": "0x477",
- "chainId": 3,
- "v": 42,
- "blockNumber": 10076149,
- "gas": 80000,
- "from": "0x650a87cfb9165c9f4ccc7b971d971f50f753e761",
- "to": "0xb3ea4d180f31b4000f2fbcc58a085ef2ffd5a763",
- "value": 0,
- "hash": "0x124b79341eac1dbe05ad66508d0865ef2b64a2af05087457ea015af1e8b34737",
- "gasPrice": 8000000000
}
}, - "timestamp": "1624007506",
- "status": {
- "code": "TXN1003",
- "description": "Transaction successful",
- "message": "Transaction successful",
- "value": "SUCCESSFUL",
- "timestamp": "1624007506"
}
}
Generates a request ID and automatically executes the transaction search on the requested DLT.
overledger/read.scope
) object (Location) Unique reference to the ledger on a particular ledger network (optionally accessed from a particular node) |
All good!
Bad Request
Unauthorised
Not Found
Something went wrong on our side
Prepare And Execute Transaction Search
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}
}
Successful Prepare and Failed Execute Response
{- "executionTransactionSearchOverledgerErrorResponse": {
- "code": "TRS04004",
- "description": "Your free trial has ended.",
- "category": "Validation Error"
}, - "preparationTransactionSearchResponse": {
- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "db52bd25-ff9f-49e2-ad07-7e782a70cec2"
}
}
Searches for and returns data on transactions on a particular DLT. Returns a request ID for executing a transaction search on the requested DLT
overledger/read.scope
) object (Location) Unique reference to the ledger on a particular ledger network (optionally accessed from a particular node) |
All good!
Unauthorised
Something went wrong on our side
Transaction Search
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}
}
Prepare Response
{- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "13765b06-eaf3-4f02-acb4-b7e9da8b0380"
}
Retrieves a list of fungible tokens supported by Overledger and which API's and functions you can use for each. You can retrieve all fungible token types for all locations without providing parameters. If you want to see what tokens are supported for a specific contract type you can pass in either ERC20 or QRC20 as a contract type parameter. You can then filter further by including the resource using technology and network parameters. You can also look for a specific token by passing in the unit as a parameter.
All good!
Bad Request
Unauthorised
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const query = new URLSearchParams({ network: 'string', technology: 'string', contractType: 'string', unit: 'string' }).toString(); const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/tokens/fungible?${query}`, {method: 'GET'} ); const data = await resp.text(); console.log(data); } run();
Tokens
[- {
- "unit": "BNB",
- "decimalPlaces": 18,
- "functions": [
- {
- "api": "/preparation/transaction",
- "type": "Payment"
}
], - "contractType": "ERC20",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "smartContractId": "0x64bbf67a8251f7482330c33e65b08b835125e018"
}, - {
- "unit": "USDT",
- "decimalPlaces": 6,
- "functions": [
- {
- "api": "/preparation/transaction",
- "type": "Payment"
}
], - "contractType": "ERC20",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "smartContractId": "0x03f7cef050aac29954a97334c00920aa8919dc37"
}, - {
- "unit": "LINK",
- "decimalPlaces": 18,
- "functions": [
- {
- "api": "/preparation/transaction",
- "type": "Payment"
}
], - "contractType": "ERC20",
- "location": {
- "technology": "ethereum",
- "network": "ropsten testnet"
}, - "smartContractId": "0x39e4d3cacba1bdc19c35d0394e186a6c5b724ed3"
}, - {
- "unit": "QNT",
- "decimalPlaces": 18,
- "functions": [
- {
- "api": "/preparation/transaction",
- "type": "Payment"
}
], - "contractType": "ERC20",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "smartContractId": "0xf9cd6c86992fce1481dbc4bdb7e1b101c1e8cee2"
}
]
Returns a list of transactions and the corresponding Overledger Transaction ID your application has created in Overledger. Does not require a Prepare step, as this data is held within Overledger, rather than on the DLT
overledger/read.scope
) All good!
Unauthorised
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const query = new URLSearchParams({ offset: '0', length: '25' }).toString(); const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/mdapptransactions?${query}`, { method: 'GET', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
List Overledger Transactions
[- {
- "requestId": "f5023411-20b6-456d-9966-b01dd5fddb32",
- "overledgerTransactionId": "c73135fb-7264-4183-93e8-b067f03ecda1",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "transactionId": "0xa9b1529e1f2ebaed7c865b1e24e283f905e0b9cc2a2cbe6ba80b987deb6780db",
- "status": {
- "code": "TXN1003",
- "description": "Transaction successful",
- "message": "Transaction successful",
- "value": "SUCCESSFUL",
- "timestamp": "1649332529"
}, - "timestamp": "1649332529"
}, - {
- "requestId": "a3a091d3-6718-4e77-afb5-0cd3ffc266bf",
- "overledgerTransactionId": "c849b101-dd64-4100-a809-7812cf64dbcb",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "transactionId": "0x401ab7fafc12b97d63ec825de6557b8f13b077373e1bb4ded62b4b263c0a2e23",
- "status": {
- "code": "TXN1003",
- "description": "Transaction successful",
- "message": "Transaction successful",
- "value": "SUCCESSFUL",
- "timestamp": "1649332529"
}, - "timestamp": "1649332529"
}
]
Returns information for a specific transaction based on a given Overledger Transaction ID. Does not require a Prepare step, as this data is held within Overledger, rather than on the DLT
overledger/read.scope
) All good!
Unauthorised
Not Found
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const overledgertransactionid = 'YOUR_overledgertransactionid_PARAMETER'; const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/mdapptransaction/${overledgertransactionid}`, { method: 'GET', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
Overledger Transaction
{- "clientId": "66vioicl7k3kh99thp3g4vgsl7",
- "requestId": "a3a091d3-6718-4e77-afb5-0cd3ffc266bf",
- "overledgerTransactionId": "c849b101-dd64-4100-a809-7812cf64dbcb",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "transactionHistory": [
- {
- "code": "TXN1001",
- "description": "Transaction created",
- "message": "The transaction was created. It will be updated to Pending if it is handled succesfully by a connector.",
- "value": "CREATED",
- "timestamp": "1649332529"
}, - {
- "code": "TXN1002",
- "description": "The transaction has been successfully broadcasted to the network. The status will next be updated after a sufficient block number has been reached. At this point we can be confident that the transaction will be successful or will have failed.",
- "message": "Transaction is pending.",
- "value": "PENDING",
- "timestamp": "1649332529"
}, - {
- "code": "TXN1003",
- "description": "Transaction successful",
- "message": "Transaction successful",
- "value": "SUCCESSFUL",
- "timestamp": "1649332529"
}
], - "type": "Contract Invoke",
- "transactionId": "0x401ab7fafc12b97d63ec825de6557b8f13b077373e1bb4ded62b4b263c0a2e23",
- "status": {
- "code": "TXN1003",
- "description": "Transaction successful",
- "message": "Transaction successful",
- "value": "SUCCESSFUL",
- "timestamp": "1649332529"
}
}
Overledger creates a tracking record for the given address and records information each time the given address receives or sends transactions on the DLT
overledger/read.scope
) All good!
Unauthorised
Something went wrong on our side
Monitor Address
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "addressId": "0xd8b31B65878a6B1a6cAf9f4819C1A42d68a7A116"
}
Create Resource Monitoring
{- "subscriptionDetails": {
- "ids": [
- "42c2452b-6af9-4238-aacf-4669864cd879"
], - "status": {
- "code": "SUB1000",
- "description": "Subscription Successful.",
- "message": "Subscription has been set up successfully and updates will be sent to the relevant callback URL.",
- "value": "ACTIVE",
- "timestamp": "1646908272"
}
}, - "resourceMonitoring": {
- "resourceMonitoringId": "42c2452b-6af9-4238-aacf-4669864cd879",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "Address",
- "timestamp": "1646908272",
- "status": {
- "code": "MON1000",
- "description": "Resource Monitoring Successful",
- "message": "MON1000 - Resource Monitoring has been set up successfully.",
- "value": "ACTIVE",
- "timestamp": "1646908272"
}
}, - "subscription": {
- "subscriptionId": "614b127f60a15b6def675af3",
- "type": "resourceMonitoringId"
}
}
Overledger creates a tracking record for the given smart contract and records information each time a transaction on the DLT triggers a specific event
overledger/read.scope
) All good!
Unauthorised
Something went wrong on our side
Monitor Smart Contract
{- "eventParams": [
- {
- "selectedIntegerLength": "B256",
- "type": "UINT",
- "value": "3"
}, - {
- "selectedIntegerLength": "B256",
- "type": "UINT",
- "value": "2"
}
], - "eventName": "mul",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "smartContractId": "0x8781d54e454377451D9C6928538Db544Caa65CDf"
}
Create Smart Contract Monitoring
{- "subscriptionDetails": {
- "ids": [
- "27a9dba9-bd0d-4d97-8aa2-373d9c5313c8"
], - "status": {
- "code": "SUB1000",
- "description": "Subscription Successful.",
- "message": "Subscription has been set up successfully and updates will be sent to the relevant callback URL.",
- "value": "ACTIVE",
- "timestamp": "1646920695"
}
}, - "resourceMonitoring": {
- "resourceMonitoringId": "27a9dba9-bd0d-4d97-8aa2-373d9c5313c8",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "status": {
- "code": "MON1000",
- "description": "Resource Monitoring Successful",
- "message": "MON1000 - Resource Monitoring has been set up successfully.",
- "value": "ACTIVE",
- "timestamp": "1646920695"
}
}, - "subscription": {
- "subscriptionId": "614b235860a15b6def675af8",
- "type": "resourceMonitoringId"
}
}
Returns a list of smart contracts being monitored for your application and the corresponding Resource Monitoring ID
overledger/read.scope
) All good!
Unauthorised
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/resourcemonitoring/smartcontractevents`, { method: 'GET', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
List Resource Monitoring
[- {
- "resourceMonitoring": {
- "resourceMonitoringId": "808697d9-9383-4841-9d2c-e7880850116a",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "Address",
- "timestamp": "1645454327",
- "status": {
- "code": "MON1001",
- "description": "Resource Monitoring Inactive",
- "message": "MON1001 - Resource Monitoring is currently paused.",
- "value": "INACTIVE",
- "timestamp": "1645454327"
}
}
}
]
Returns a list of all of the resources being monitored for your application and the corresponding Resource Monitoring ID
overledger/read.scope
) All good!
Unauthorised
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/resourcemonitoring`, { method: 'GET', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
List Resource Monitoring
[- {
- "resourceMonitoring": {
- "resourceMonitoringId": "808697d9-9383-4841-9d2c-e7880850116a",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "Address",
- "timestamp": "1645454327",
- "status": {
- "code": "MON1001",
- "description": "Resource Monitoring Inactive",
- "message": "MON1001 - Resource Monitoring is currently paused.",
- "value": "INACTIVE",
- "timestamp": "1645454327"
}
}
}
]
Updates the resource monitoring status to be either active or inactive for the given Resource Monitoring ID. Updating the status to be inactive will pause Overledger recording updates for the requested smart contract
overledger/read.scope
) object (StatusUpdateSchema) |
All good!
Unauthorised
Something went wrong on our side
Update Monitoring
{- "statusUpdate": {
- "value": "INACTIVE"
}
}
Update Monitoring
{- "smartContractEventMonitoringDetails": {
- "eventName": "mul",
- "eventParameters": "0xc8a4ac9cf5aac391a07a9bdc2c522f2e824978425be99588f97394814d127214",
- "smartContractId": "0x8681d54E454377451D9c6928538DB544Caa65CDf"
}, - "resourceMonitoring": {
- "resourceMonitoringId": "27a9dba9-bd0d-4d97-8aa2-373d9c5313c8",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "Smart Contract Event",
- "timestamp": "1645454327",
- "status": {
- "code": "MON1001",
- "description": "Resource Monitoring Inactive.",
- "message": "MON1001 - Resource Monitoring is currently paused.",
- "value": "INACTIVE",
- "timestamp": "1645454327"
}
}
}
Returns the update information recorded in Overledger for asmart contract being monitored by your application for a given Resource Monitoring ID
overledger/read.scope
) All good!
Unauthorised
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const resourceMonitoringId = 'YOUR_resourceMonitoringId_PARAMETER'; const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/resourcemonitoring/smartcontractevent/${resourceMonitoringId}`, { method: 'GET', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
Get Resource Monitoring Details
{- "smartContractEventHistory": [ ],
- "smartContractEventDetails": {
- "eventName": "mul",
- "eventParameters": "0xc8a4ac9cf5aac391a07a9bdc2c522f2e824978425be99588f97394814d127214",
- "smartContractId": "0x8781d54e454377451D9C6928538Db544Caa65CDf"
}, - "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "Smart Contract Event",
- "status": {
- "code": "MON1000",
- "description": "Resource Monitoring Successful",
- "message": "MON1000 - Resource Monitoring has been set up successfully.",
- "value": "ACTIVE",
- "timestamp": "2021-09-15T15:09:24.279Z"
}, - "timestamp": "2021-09-22T12:46:19.810922Z"
}
Deletes the tracking record in Overledger to stop Overledger from recording updates for a smart contract based on the given Resource Monitoring ID
overledger/read.scope
) All good!
Unauthorised
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const resourceMonitoringId = 'YOUR_resourceMonitoringId_PARAMETER'; const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/resourcemonitoring/smartcontractevent/${resourceMonitoringId}`, { method: 'DELETE', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
Update Monitoring
{- "smartContractEventMonitoringDetails": {
- "eventName": "mul",
- "eventParameters": "0xc8a4ac9cf5aac391a07a9bdc2c522f2e824978425be99588f97394814d127214",
- "smartContractId": "0x8681d54E454377451D9c6928538DB544Caa65CDf"
}, - "resourceMonitoring": {
- "resourceMonitoringId": "27a9dba9-bd0d-4d97-8aa2-373d9c5313c8",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "Smart Contract Event",
- "timestamp": "1645454327",
- "status": {
- "code": "MON1001",
- "description": "Resource Monitoring Inactive.",
- "message": "MON1001 - Resource Monitoring is currently paused.",
- "value": "INACTIVE",
- "timestamp": "1645454327"
}
}
}
Updates the resource monitoring status to be either active or inactive for the given Resource Monitoring ID. Updating the status to beinactive will pause Overledger recording updates for the requested address
overledger/read.scope
) object (StatusUpdateSchema) |
All good!
Unauthorised
Something went wrong on our side
Update Monitoring
{- "statusUpdate": {
- "value": "INACTIVE"
}
}
Update Resource Monitoring
{- "addressMonitoringDetails": {
- "addressId": "0xb8b31B65878a6B1a6cAf9f4819C1A42d68a7A116"
}, - "resourceMonitoring": {
- "resourceMonitoringId": "42c2452b-6af9-4238-aacf-4669864cd879",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "Address",
- "timestamp": "1629997029",
- "status": {
- "code": "MON3001",
- "description": "Resource Monitoring Inactive.",
- "message": "MON3001 - Resource Monitoring is currently paused.",
- "value": "INACTIVE",
- "timestamp": "1629997029"
}
}
}
Returns the update information recorded in Overledger for an address being monitored by your application for a given Resource Monitoring ID
overledger/read.scope
) All good!
Unauthorised
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const resourceMonitoringId = 'YOUR_resourceMonitoringId_PARAMETER'; const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/resourcemonitoring/address/${resourceMonitoringId}`, { method: 'GET', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
Get Resource Monitoring
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "addressDetails": {
- "addressId": "0xb8b31B65878a6B1a6cAf9f4819C1A42d68a7A116"
}, - "addressHistory": [
- {
- "transactionId": "0xb691a3378c6ceb44e199535fe2cd30fc0029539eadda8c05baf7975d3fcc3da8"
}, - {
- "transactionId": "0xb691a3378c6ceb44e199535fe2cd30fc0029539eadda8c05baf7975d3fcc3da8"
}, - {
- "transactionId": "0xb691a3378c6ceb44e199535fe2cd30fc0029539eadda8c05baf7975d3fcc3da8"
}
], - "type": "Address",
- "timestamp": "1626692612",
- "status": {
- "code": "MON1000",
- "description": "Resource Monitoring Successful",
- "message": "MON1000 - Resource Monitoring has been set up successfully.",
- "value": "ACTIVE",
- "timestamp": "1626692612"
}
}
Deletes the tracking record in Overledger to stop Overledger from recording updates for an address based on the given Resource Monitoring ID
overledger/read.scope
) All good!
Unauthorised
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const resourceMonitoringId = 'YOUR_resourceMonitoringId_PARAMETER'; const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/resourcemonitoring/address/${resourceMonitoringId}`, { method: 'DELETE', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
Delete Resource Monitoring
{- "addressMonitoringDetails": {
- "addressId": "0xb8b31B65878a6B1a6cAf9f4819C1A42d68a7A116"
}, - "resourceMonitoring": {
- "resourceMonitoringId": "42c2452b-6af9-4238-aacf-4669864cd879",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "Address",
- "timestamp": "1630074571",
- "status": {
- "code": "MON3002",
- "description": "Resource Monitoring Deleted.",
- "message": "MON3002 - Resource Monitoring has been deleted.",
- "value": "DELETED",
- "timestamp": "1630074571"
}
}
}
Returns a list of addresses being monitored for your application and the corresponding Resource Monitoring ID
overledger/read.scope
) All good!
Unauthorised
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/resourcemonitoring/addresses`, { method: 'GET', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
List Resource Monitoring
[- {
- "resourceMonitoring": {
- "resourceMonitoringId": "808697d9-9383-4841-9d2c-e7880850116a",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "type": "Address",
- "timestamp": "1645454327",
- "status": {
- "code": "MON1001",
- "description": "Resource Monitoring Inactive",
- "message": "MON1001 - Resource Monitoring is currently paused.",
- "value": "INACTIVE",
- "timestamp": "1645454327"
}
}
}
]
Creates a subscription to receive status updates for a transaction created in Overledger, or to receive updates each time a transaction happens on the requested DLT for a resource (e.g. address) being monitored, to the requested callback URL. Subscriptions are created using an Overledger Transaction ID or Resource Monitoring ID
overledger/read.scope
) All good!
Something went wrong on your side
Unauthorised
{id} does not exist
Something went wrong on our side
Create Subscription
{- "ids": [
- "71633eb9-dcda-4a7d-a176-12ac0d0bb076"
], - "type": "resourceMonitoringId"
}
Create Subscription
[- {
- "subscriptionDetails": {
- "ids": [
- "3606e1a2-ae85-4676-8fb3-40917cb63bd4"
], - "status": {
- "code": "SUB1000",
- "description": "Subscription Successful.",
- "message": "Subscription has been set up successfully and updates will be sent to the relevant callback URL.",
- "value": "ACTIVE",
- "timestamp": "1646908272"
}
}, - "subscriptionId": "6141b9bcb65cf749ea893c45"
}
]
Updates the subscription callback URL and/or the subscription status to be either active or track only for the given Subscription ID. Updating the status to be track only will pause updates being sent to the requested callback URL
overledger/read.scope
) All good!
Unauthorised
You do not currently have any subscriptions
Method is not allowed
Something went wrong on our side
Update Subscription
{- "statusUpdate": {
- "value": "ACTIVE"
},
}
200 Update Success
{- "subscriptionDetails": {
- "ids": [
- "73bdc298-525e-4848-9510-5f12a6b43224"
], - "status": {
- "code": "SUB1001",
- "description": "SUB1001",
- "message": "Subscription existed but is not currently active. Currently only monitoring is in place.",
- "value": "TRACK ONLY",
- "timestamp": "1646908272"
}
}, - "subscriptionId": "61406222b65cf749ea893c1a",
- "type": "resourceMonitoringId"
}
Deletes a subscription created by your application based onthe given Subscription ID. Deleting a subscription will stop updates being sent to the requested callback URL
overledger/read.scope
) All good!
Unauthorised
You do not currently have any subscriptions
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const subscriptionId = 'YOUR_subscriptionId_PARAMETER'; const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/webhook/subscription/${subscriptionId}`, { method: 'DELETE', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
200 Delete Successful
{- "subscriptionDetails": {
- "ids": [
- "3606e1a2-ae85-4676-8fb3-40917cb63bd4"
], - "status": {
- "code": "SUB1002",
- "description": "Subscription Deleted.",
- "message": "Subscription has been deleted and will no longer send updates to the relevant callback URL",
- "value": "DELETED",
- "timestamp": "1646908272"
}
}, - "subscriptionId": "6141b9bcb65cf749ea893c45",
- "type": "resourceMonitoringId"
}
Returns a list of active or paused subscriptions and the corresponding Subscription IDs that were created by your application
overledger/read.scope
) All good!
You do not currently have any subscriptions
Unauthorised
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/webhook/subscriptions`, { method: 'GET', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
200 List Subscriptions
[- {
- "subscriptionDetails": {
- "ids": [
- "1567837c-cf78-4887-bbbb-ecba6e3ae2d7"
], - "status": {
- "code": "SUB1002",
- "description": "Subscription Deleted.",
- "message": "Subscription has been deleted and will no longer send updates to the relevant callback URL",
- "value": "DELETED",
- "timestamp": "1646908272"
}
}, - "subscribedTime": "2021-06-09T15:01:37.782Z",
- "subscriptionId": "60c0d7d122dcc42f3b485821",
- "type": "resourceMonitoringId"
}, - {
- "subscriptionDetails": {
- "ids": [
- "ca5b4e1c-55ec-4a3f-9004-d4fb90a2c591"
], - "status": {
- "code": "SUB1002",
- "description": "Subscription Deleted.",
- "message": "Subscription has been deleted and will no longer send updates to the relevant callback URL",
- "value": "DELETED",
- "timestamp": "1646908272"
}
}, - "subscribedTime": "2021-07-27T17:06:06.491Z",
- "subscriptionId": "61003cfeb213e26e61a44dc5",
- "type": "overledgerTransactionId"
}
]
Returns a request ID for executing a smart contract read on Ethereum.
overledger/read.scope
) object (SmartContractSearchRequestDetails) | |
object (Location) Unique reference to the ledger on a particular ledger network (optionally accessed from a particular node) |
All good!
Unauthorised
Something went wrong on our side
Smart Contract Search
{- "requestDetails": {
- "destination": [
- {
- "smartContract": {
- "function": {
- "name": "balanceOf",
- "inputParameters": [
- {
- "type": "address",
- "value": "0x8917cf2A57DF39D311a96c53FCCA76dAFB25392B"
}
], - "outputParameters": [
- {
- "type": "uint256"
}
]
}, - "smartContractId": "0xF9cd6C86992Fce1481dBc4bDB7E1b101c1e8cEE2"
}
}
]
}, - "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}
}
Prepare Response
{- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "13765b06-eaf3-4f02-acb4-b7e9da8b0380"
}
Takes a request ID and reads the smart contract on Ethereum based on the parameters specified in the prepare request.
overledger/read.scope
) All good!
Unauthorised
Not Found
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const query = new URLSearchParams({requestId: 'string'}).toString(); const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/execution/search/smartcontract?${query}`, { method: 'POST', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
Execute Response
{- "smartContract": {
- "function": {
- "functionId": "0x70a08231",
- "name": "balanceOf",
- "inputParameters": [
- {
- "type": "address",
- "value": "0x8917cf2A57DF39D311a96c53FCCA76dAFB25392B"
}
], - "outputParameters": [
- {
- "type": "uint256",
- "value": "141999998900488372232"
}
]
}, - "smartContractId": "0xF9cd6C86992Fce1481dBc4bDB7E1b101c1e8cEE2"
}, - "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}
}
Generates a request ID and automatically executes the smart contract query search on the requested DLT.
overledger/read.scope
) object (Location) Unique reference to the ledger on a particular ledger network (optionally accessed from a particular node) |
All good!
Bad Request
Unauthorised
Something went wrong on our side
Smart contract query Search
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}
}
Successful Prepare and Failed Execute Response
{- "prepareAndExecuteOverledgerErrorResponse": {
- "code": "TRS04004",
- "description": "Your free trial has ended.",
- "category": "Validation Error"
}, - "preparationSmartContractSearchResponse": {
- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "db52bd25-ff9f-49e2-ad07-7e782a70cec2"
}
}
Takes a request ID, searches for the address and retrieves the balance on the requested DLT. This API is only applicable for account based DLTs
overledger/read.scope
) All good!
Unauthorised
Not Found
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const query = new URLSearchParams({requestId: 'string'}).toString(); const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/execution/search/address/balance?${query}`, { method: 'POST', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
Execute Response
{- "balances": [
- {
- "unit": "ETH",
- "amount": "4.99719116955385472"
}
], - "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "addressId": "0x650A87cfB9165C9F4Ccc7B971D971f50f753e761"
}
Generates a request ID and automatically executes the address sequence search on the requested DLT.
overledger/read.scope
) object (Location) Unique reference to the ledger on a particular ledger network (optionally accessed from a particular node) |
All good!
Bad Request
Unauthorised
Something went wrong on our side
Address Sequence Search
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}
}
Successful Prepare and Address not found Execute Response
{- "preparationAddressSequenceSearchResponse": {
- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "ba74dab3-0012-4dfe-ade4-4f4b045b8bf1"
}, - "prepareAndExecuteOverledgerErrorResponse": {
- "code": "ADD04024",
- "description": "Address rUy24rW7XnhWLWMcmQ9AbMx6wvjKa6iqaD cannot be found on xrp ledger testnet.",
- "category": "Validation Error"
}
}
Generates a request ID and automatically executes the address balance search on the requested DLT.
overledger/read.scope
) object (Location) Unique reference to the ledger on a particular ledger network (optionally accessed from a particular node) |
All good!
Bad Request
Unauthorised
Something went wrong on our side
Address Balance Search
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}
}
Successful Prepare and Address not found Execute Response
{- "prepareAndExecuteOverledgerErrorResponse": {
- "code": "ADD04024",
- "description": "Address rUy24rW7XnhWLWMcmQ9AbMx6wvjKa6iqaD cannot be found on xrp ledger testnet.",
- "category": "Validation Error"
}, - "preparationAddressBalanceSearchResponse": {
- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "ba74dab3-0012-4dfe-ade4-4f4b045b8bf1"
}
}
Takes a request ID, searches for the address and retrieves the sequence on the requested DLT. This API is only applicable for account based DLT's
overledger/read.scope
) All good!
Unauthorised
Not Found
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const query = new URLSearchParams({requestId: 'string'}).toString(); const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/execution/search/address/sequence?${query}`, { method: 'POST', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
Execute Response
{- "sequence": "1848",
- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "addressId": "0x650A87cfB9165C9F4Ccc7B971D971f50f753e761"
}
Perform an address sequence search on the requested DLT.Returns a request ID to execute
overledger/read.scope
) object (Location) Unique reference to the ledger on a particular ledger network (optionally accessed from a particular node) |
All good!
Unauthorised
Something went wrong on our side
Address Sequence Search
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}
}
Prepare Response
{- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "13765b06-eaf3-4f02-acb4-b7e9da8b0380"
}
Perform an address balance search on the requested DLT. Returns a request ID to execute
overledger/read.scope
) object (Location) Unique reference to the ledger on a particular ledger network (optionally accessed from a particular node) |
All good!
Unauthorised
Something went wrong on our side
Address Balance Search
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}
}
Prepare Response
{- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "13765b06-eaf3-4f02-acb4-b7e9da8b0380"
}
Returns a request ID for executing a search for the status ofa UTXO on UTXO based DLT's
overledger/read.scope
) object (Location) Unique reference to the ledger on a particular ledger network (optionally accessed from a particular node) |
All good!
Unauthorised
Something went wrong on our side
UTXO Transaction Search
{- "location": {
- "technology": "Bitcoin",
- "network": "Testnet"
}
}
Prepare Response
{- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "13765b06-eaf3-4f02-acb4-b7e9da8b0380"
}
Generates a request ID and automatically executes the utxo search on the requested DLT.
overledger/read.scope
) object (Location) Unique reference to the ledger on a particular ledger network (optionally accessed from a particular node) |
All good!
Bad Request
Unauthorised
Something went wrong on our side
UTXO Search
{- "location": {
- "technology": "Bitcoin",
- "network": "Testnet"
}
}
Successful Prepare and Address transaction not found Execute Response
{- "prepareAndExecuteOverledgerErrorResponse": {
- "code": "404",
- "description": "No Transaction can be found for UTXO:74f513dae1a7c238eda6e2b3e667a4b0e75f422882512466dd2d5ea702c43466 on Bitcoin testnet",
- "category": "Overledger Error"
}, - "preparationUtxoSearchResponse": {
- "gatewayFee": {
- "amount": "0",
- "unit": "QNT"
}, - "requestId": "d96894c1-e516-42dd-bbdb-0cdd9b961885"
}
}
Takes a request ID, searches for the UTXO state and retrieves the details on the requested DLT. This API is only applicable for Bitcoin.
overledger/read.scope
) All good!
Unauthorised
Not Found
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const query = new URLSearchParams({requestId: 'string'}).toString(); const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/execution/search/utxo?${query}`, { method: 'POST', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
Execute Response
{- "utxoId": "96ad36032c3ea15dcd05388910e37c2d81d9904035910a32b6b15ea1664a72b8",
- "destination": [
- {
- "smartContract": {
- "detail": "OP_DUP OP_HASH160 1d1b4dca757c6f55eec913b636a8bd377e09e937 OP_EQUALVERIFY OP_CHECKSIG",
- "type": "pubkeyhash",
- "extraFields": {
- "requiredSignatures": 1
}
}, - "payment": {
- "amount": "0.01718653",
- "unit": "BTC"
}, - "destinationId": "miArbiuPSMbyZZbetikbkauxDu8Y7ZDhX1"
}
], - "location": {
- "technology": "Bitcoin",
- "network": "Testnet"
}, - "timestamp": "1624007506",
- "status": {
- "code": "SPENT",
- "description": "The UTXO has been spent in a transaction that is either in pending or successful status.",
- "message": "UTXO has been spent.",
- "value": "UTX1002",
- "timestamp": "1624007506"
}, - "nativeData": {
- "vout": [
- {
- "scriptPubKey": {
- "addresses": [
- "miArbiuPSMbyZZbetikbkauxDu8Y7ZDhX1"
], - "asm": "OP_DUP OP_HASH160 1d1b4dca757c6f55eec913b636a8bd377e09e937 OP_EQUALVERIFY OP_CHECKSIG",
- "hex": "76a9141d1b4dca757c6f55eec913b636a8bd377e09e93788ac",
- "type": "pubkeyhash",
- "reqSigs": 1
}, - "value": 0.01718653,
- "n": 0
}
]
}
}
Takes a request ID and searches for the block on the requested DLT based on the parameters specified in the prepare request
overledger/read.scope
) All good!
Unauthorised
Not Found
Something went wrong on our side
import fetch from 'node-fetch'; async function run() { const query = new URLSearchParams({requestId: 'string'}).toString(); const resp = await fetch( `https://api.dev-sandbox.testing.quantnetwork.net/v2/execution/search/block?${query}`, { method: 'POST', headers: { Authorization: 'Bearer <YOUR_TOKEN_HERE>' } } ); const data = await resp.text(); console.log(data); } run();
Execute Response
{- "location": {
- "technology": "Ethereum",
- "network": "Ropsten Testnet"
}, - "block": {
- "blockId": "0xb67dd34c0182e3da1db437914dcac38349a4565177ed1fabf2bf430a10a51002",
- "number": 10463066,
- "transactionIds": [
- "0x23f735f928b965338b6106d3a5498d1c917636356cde5eff387be9057a89600a",
- "0x5be54c39aa333c179780835e71d0aa53ace947e87cbe773f78e01d3ec1d3c2f5",
- "0xa1d2ffb6fce00c2a88d3ce6009ba2a0292be0833b1a5b44dff29f4f45bf8eb55",
- "0x24772822aafbecdc13d8b7beb47409c4aedd51d2085f613285c5170b452589b4",
- "0xe6cbe261766fd39b97a804010ce0ab4a41343435669d0034bfbe4ca148a37a53",
- "0xf3858d514aecba7269053073f8d8c0c60e28caf5d57862283284e65000d97402",
- "0x411c05394cc2945dc5db398caa99f1fb298d9e00f169aa951c95df44cf2faec5",
- "0x035be53f62cf734f9d5b5e24865bdb887972c0eb4fb969a07ddc73548cfd073f",
- "0x8e652054607f55fb37662e92131f89a4cfe47a434c35dc1773be7617d490e3a0",
- "0xc522af58fe60a117f253885e25002623e914691ae3ea690a0d001508cb12c27b",
- "0x4bf99363f2b761178841dfd81d5b0a8685fc93ba79971f04b3985e182207a0dc",
- "0x84aede3ee9d86ed657af280ed50f81869e93ea5f506460f2b20014cd8b31dc87",
- "0x7a2553921c527b764e10ded79f0776f982ba655f5a95a8249579a5fe1dd06454",
- "0x43b7b1e933a7f96bb6071d572b42d2383638a77a4880873d11e4b714cf985242",
- "0x855e6186a26e5e135de3749379e10e5801174bb5bf731545b468f50c98368b8f",
- "0x1610909fc0115cfd5f529f7203046897c5efd4edafac704c0fe82ab05a4d546e",
- "0x4694fbd19645f7f33d9ec20ff3cf94bbc65faaf6af7bcb1661e19055497ba77e",
- "0xfac3052e8325e6e28b09a787fc10c9f6eba025aa264b9cb3162c269878053bd2",
- "0x640b80e30e5d52672a7da74ccc3e93ee415e227829d85745b602642ba2361b2e",
- "0xe9ac6eefeb5e114e11c83a1e8efa014166078514ce80d331f2702ad2473e6a6d"
], - "size": [
- {