Table of Contents
Overview
FIO Relic is a fork of Antelope Memento and is intended to receive FIO Chain data stream from the FIO Chain Node via EOS Chronicle. FIO specific data is extracted from the stream and stored in a Relational Database (RDB) for future query via API. The following document is intended to be functional specification for the FIO Relic System.
Components
Data Transformation
This component is responsible for reading the data in the data stream and looking for FIO-specific data, parsing it, and inserting into RDB.
Example:
When an action registering FIO Domain is observed, insert it into domains table.
Query API
This component is responsible for receiving an API request, fetching relevant data from the RDB and returning to the API user.
Example:
Fetch all FIO Domains registered in specific time-frame.
Push Notification System
This component will be developed in Phase 2.
This component allows an API user to subscribe to specific events and then receive notification if such event has occurred during data transformation.
Examples
“Notify supplied webhook on every new FIO Domain registration”
“Notify when a FIO Request for specific FIO Handle is observed”
Specification
Data Model
blocks
Add only. Every block is a new entry.
Field | Description | Relationship |
---|---|---|
number | FROM CHAIN DATA Block number as generated by FIO Node | transactions → block_num |
id | FROM CHAIN DATA Block ID as generated by FIO Node | |
timestamp | FROM CHAIN DATA Timestamp as generated by FIO Node | |
producer | FROM CHAIN DATA Account name of producer which produced the block | |
schedule_version | FROM CHAIN DATA Version of BP schedule |
transactions
Add only. Every transaction is a new entry.
Field | Description | Relationship |
---|---|---|
block_number | FROM CHAIN DATA Block which contained this transaction | blocks → number |
id | FROM CHAIN DATA Transaction id | traces → transaction_id |
action_account | FROM CHAIN DATA Account name for action | |
action_name | FROM CHAIN DATA Action name | |
account | FROM CHAIN DATA Account which executed the transaction | |
tpid | FROM CHAIN DATA TPID which was recorded in tranaction | |
fee | FROM CHAIN DATA FIO Chain fee paid for this transaction | |
request_data | FROM CHAIN DATA Raw request data for primary trace | |
response_data | FROM CHAIN DATA Raw response data for primary trace | |
status | FROM CHAIN DATA Transaction status |
traces
Add only. Every trace is a new entry.
Field | Description | Relationship |
---|---|---|
id | GENERATED Trace ID - generated. | |
transaction_id | FROM CHAIN DATA Transaction ID | transactions → id |
receiver | FROM CHAIN DATA Receiver of trace | |
action_ordinal | FROM CHAIN DATA Sequential order of trace in transaction | |
action_account | FROM CHAIN DATA Account name for trace | |
action_name | FROM CHAIN DATA Action name fro trace | |
request_data | FROM CHAIN DATA Raw request data for trace |
accounts
Add only. Every account created is a new entry.
Field | Description | Relationship |
---|---|---|
account | FROM CHAIN DATA Account name | account_activity → account domains → account handles → account token_transfers → payer_account token_transfers → payee_account token_staking → staker_account fio_requests → payee_account fio_requests → payer_account fio_data → payee_account fio_data → payer_account |
public_key | FROM CHAIN DATA Primary public key | |
timestamp | FROM CHAIN DATA Block timestamp of when account was created |
account_activity
Add only. Every activity is a new entry.
Field | Description | Relationship |
---|---|---|
account | FROM CHAIN DATA Account name | accounts → account |
transaction_id | FROM CHAIN DATA Transaction ID | transactions → id |
type | DEFINED BY RULES Type of activity. Options:
|
domains
Add and update. Represents current state of domains. Will be updated every time domain info changes. Records will not be removed, just marked burned.
Field | Description | Relationship |
---|---|---|
domain | FROM CHAIN DATA Domain name | domain_activity → domain |
account | FROM CHAIN DATA DEFINED BY RULES Account name of current owner | accounts → account |
is_public | FROM CHAIN DATA Is domain public | |
expiration | FROM CHAIN DATA Timestamp of domain expiration | |
status | DEFINED BY RULES Current status of domain. Options:
|
domain_activity
Add only. Every activity is a new entry
Field | Description | Relationship |
---|---|---|
domain | FROM CHAIN DATA Domain name | domains → domain |
transaction_id | FROM CHAIN DATA Transaction ID | transactions → id |
type | DEFINED BY RULES Type of activity. Options:
|
handles
Add and update. Represents current state of handles. Will be updated every time handle info changes. Records will not be removed, just marked burned.
Field | Description | Relationship |
---|---|---|
handle | FROM CHAIN DATA Handle name | handle_activity → handle pub_addresses → handle nft_signatures → handle fio_requests → payer_handle fio_requests → payee_handle fio_data → payer_handle fio_data → payee_handle |
domain | DEFINED BY RULES Domain on which handle is registered. Right of @ in user@domain | domains → domain |
account | FROM CHAIN DATA Account name of current owner | accounts → account |
encryption_key | FROM CHAIN DATA Encryption public key | |
encryption_key_set | DEFINED BY RULES Defines if encryption key was specifically set. Options:
| |
bundled_tx | FROM CHAIN DATA DEFINED BY RULES Bundled tx count | |
expiration | FROM CHAIN DATA DEFINED BY RULES Timestamp of handle expiration | |
status | DEFINED BY RULES Current status of handle. Options:
|
handle_activity
Add only. Every activity is a new entry
Field | Description | Relationship |
---|---|---|
handle | FROM CHAIN DATA Handle name | handles → handle |
transaction_id | FROM CHAIN DATA Transaction ID | transactions → id |
type | DEFINED BY RULES Type of activity. Options:
|
pub_addresses
Add, update, delete. Represents current state of mapped public addresses. Will be updated every time mapping changes. Records will be removed if needed.
Field | Description | Relationship |
---|---|---|
handle | FROM CHAIN DATA Handle name | handles → handle |
chain_code | FROM CHAIN DATA Chain code | |
token_code | FROM CHAIN DATA Token code | |
public_address | FROM CHAIN DATA Public Address |
nft_signatures
Add, update, delete. Represents current state of NFT signatures. Will be updated every time signatures are changed. Records will be removed if needed.
Field | Description | Relationship |
---|---|---|
handle | FROM CHAIN DATA Handle name | handles → handle |
chain_code | FROM CHAIN DATA Chain code | |
contract_address | FROM CHAIN DATA Contract address | |
token_id | FROM CHAIN DATA Token ID | |
url | FROM CHAIN DATA url | |
hash | FROM CHAIN DATA hash | |
metadata | FROM CHAIN DATA metadata |
token_transfers
Add only. Every transfer is a new entry. Includes internal transfers.
Field | Description | Relationship |
---|---|---|
payer_account | FROM CHAIN DATA DEFINED BY RULES Account of payer (sender) | accounts → account |
payee_account | FROM CHAIN DATA DEFINED BY RULES Account of payee (receiver) | accounts → account |
transaction_id | FROM CHAIN DATA Transaction ID | transactions → id |
amount | FROM CHAIN DATA DEFINED BY RULES Token amount in FIO | |
type | DEFINED BY RULES Type of transfer. Options:
| |
memo | FROM CHAIN DATA Memo in transfer |
token_staking
Add only. Every stake or unstake is a new entry. Includes internal transfers.
Field | Description | Relationship |
---|---|---|
staker_account | FROM CHAIN DATA Account of staker | accounts → account |
transaction_id | FROM CHAIN DATA Transaction ID | transactions → id |
amount | FROM CHAIN DATA DEFINED BY RULES Token amount in FIO, unstake will be negative |
fio_requests
Add and update. Represents current state of requests. Will be updated every time request status changes. Records will not be removed.
Field | Description | Relationship |
---|---|---|
id | FROM CHAIN DATA FIO Request ID | fio_data → request_id |
payee_handle | FROM CHAIN DATA Handle of payer | handles → handle |
payer_handle | FROM CHAIN DATA Handle of payee | handles → handle |
content | FROM CHAIN DATA Encrypted blob | |
payee_pub_key | FROM CHAIN DATA Public Key of payee | |
payer_pub_key | FROM CHAIN DATA Public Key of payer | |
status | FROM CHAIN DATA DEFINED BY RULES Status of request. Options:
| |
transaction_id | FROM CHAIN DATA Transaction ID | transactions → id |
fio_data
Add and update. Represents current state of FIO Data. Will be updated every time request status changes. Records will not be removed.
Field | Description | Relationship |
---|---|---|
request_id | FROM CHAIN DATA FIO Request ID (optional) | fio_requests → id |
payee_handle | FROM CHAIN DATA Handle of payer | handles → handle |
payer_handle | FROM CHAIN DATA Handle of payee | handles → handle |
content | FROM CHAIN DATA Encrypted blob | |
payee_pub_key | FROM CHAIN DATA Public Key of payee | |
payer_pub_key | FROM CHAIN DATA Public Key of payer | |
status | FROM CHAIN DATA Status of data. Currently always “sent_to_blockchain”. | |
transaction_id | FROM CHAIN DATA Transaction ID | transactions → id |
Parsing Rules
The parsing rules below are triggered by any of the following:
block
transaction
trace
specific
account
andname
insidetrace
→action_traces
→act
. It will be presented as Trigger: action_account:action:name, e.g. Trigger: eosio:newaccounttable deltas
and are organized by defining the table where record needs to be added as well as data source, typically from the trace.
Please pay attention to sequence of traces to accommodate relationships, e.g. when transferring tokens to a new account, the account has to be inserted into accounts table, before transfer is recorded.
Trigger: every block
Table: blocks NEW RECORD
Field | Source Data |
---|---|
number |
|
id |
|
timestamp |
|
producer |
|
schedule_version |
|
Trigger: every trace where action_ordinal = 1
Table: transactions NEW RECORD
Field | Source Data |
---|---|
block_number |
|
id |
|
action_account |
|
action_name |
|
account |
|
tpid |
|
fee |
|
request_data |
|
response_data |
|
status |
|
Table: account_activity NEW RECORD
Field | Source Data |
---|---|
account |
|
transaction_id | Transaction ID |
type | “sender” |
Trigger: every trace where action_ordinal > 1
Table: traces NEW RECORD
Field | Source Data |
---|---|
id | Trace id. Auto-generated ID or transaction_id + action_ordinal, e.g. 770989df18fac96e48ca03d6702991d4462bebacceab8cf6b389507e998ca7fe-2 |
transaction_id |
|
receiver |
|
action_ordinal |
|
action_account |
|
action_name |
|
request_data |
|
Trigger: fio.address:bind2eosio
Table: accounts NEW RECORD
Field | Source Data |
---|---|
account |
|
public_key |
|
timestamp |
|
Table: account_activity NEW RECORD
Field | Source Data |
---|---|
account |
|
transaction_id |
|
type | “receiver” |
Trigger: fio.token:trnsfiopubky and action_ordinal = 1
Table: token_transfers NEW RECORD
Field | Source Data |
---|---|
payer_account |
|
payee_account |
|
transaction_id |
|
amount |
|
type | “transfer” |
memo |
Trigger: fio.token:trnsloctoks and action_ordinal = 1
Table: token_transfers NEW RECORD
Field | Source Data |
---|---|
payer_account |
|
payee_account |
|
transaction_id |
|
amount |
|
type | “transfer_locked” |
memo |
Trigger: fio.token:transfer and receiver = fio.token
Table: token_transfers NEW RECORD
Field | Source Data |
---|---|
payer_account |
|
payee_account |
|
transaction_id |
|
amount |
|
type | If If If If If If If |
memo |
|
Trigger: fio.token:issue and receiver = fio.token
Table: token_transfers NEW RECORD
Field | Source Data |
---|---|
payer_account | “eosio” |
payee_account |
|
transaction_id |
|
amount |
|
type | “token_mint” |
memo |
|
Trigger: fio.token:wraptokens and action_ordinal = 1
Table: token_transfers NEW RECORD
Field | Source Data |
---|---|
payer_account |
|
payee_account | “fio.oracle" |
transaction_id |
|
amount |
|
type | “wrap” |
memo |
Trigger: fio.token:stakefio and action_ordinal = 1
Table: token_staking NEW RECORD
Field | Source Data |
---|---|
staker_account |
|
transaction_id |
|
amount |
|
Trigger: fio.token:retire and action_ordinal = 1
Table: token_transfers NEW RECORD
Field | Source Data |
---|---|
payer_account |
|
payee_account | |
transaction_id |
|
amount |
|
type | “retire” |
memo |
|
Trigger: fio.token:unstakefio and action_ordinal = 1
Table: token_staking NEW RECORD
Field | Source Data |
---|---|
staker_account |
|
transaction_id |
|
amount | Negative of ( |
Trigger: fio.address:regdomain and action_ordinal = 1
Table: domains NEW RECORD or UPDATE (if exists based on domain
)
Field | Source Data |
---|---|
domain |
|
account |
|
is_public | “false” |
expiration |
|
status | “active" |
Table: domain_activity NEW RECORD
Field | Source Data |
---|---|
domain |
|
transaction_id |
|
type | “register” |
Table: account_activity NEW RECORD
Only insert if trace
→ action_traces
→ act
→ data
→ actor
is not trace
→ action_traces
→ act
→ data
→ owner_fio_public_key
hashed to account.
Field | Source Data |
---|---|
account |
|
transaction_id |
|
type | “receiver” |
Trigger: fio.address:renewdomain and action_ordinal = 1
Table: domains UPDATE
Field | Source Data |
---|---|
domain |
|
expiration |
|
Table: domain_activity NEW RECORD
Field | Source Data |
---|---|
domain |
|
transaction_id |
|
type | “renew” |
Trigger: fio.address:xferdomain and action_ordinal = 1
Table: domains UPDATE
Field | Source Data |
---|---|
domain |
|
account |
|
Table: domain_activity NEW RECORD
Field | Source Data |
---|---|
domain |
|
transaction_id |
|
type | “transfer” |
Table: account_activity NEW RECORD
Field | Source Data |
---|---|
account |
|
transaction_id |
|
type | “receiver” |
Trigger: fio.address:setdomainpub and action_ordinal = 1
Table: domains UPDATE
Field | Source Data |
---|---|
domain |
|
is_public |
|
Table: domain_activity NEW RECORD
Field | Source Data |
---|---|
domain |
|
transaction_id |
|
type | is_public: 1 type is “public” is_public: 0 type is “non-public” |
Trigger: fio.address:wrapdomain and action_ordinal = 1
Table: domains UPDATE
Field | Source Data |
---|---|
domain |
|
account | “fio.oracle” |
Table: domain_activity NEW RECORD
Field | Source Data |
---|---|
domain |
|
transaction_id |
|
type | “wrap” |
Table: account_activity NEW RECORD
Field | Source Data |
---|---|
account | “fio.oracle” |
transaction_id |
|
type | “receiver” |
Trigger: fio.address:xferescrow
Table: domains UPDATE
Field | Source Data |
---|---|
domain |
|
account |
|
Table: domain_activity NEW RECORD
Field | Source Data |
---|---|
domain |
|
transaction_id |
|
type | “unwrap” |
Table: account_activity NEW RECORD
Field | Source Data |
---|---|
account |
|
transaction_id |
|
type | “receiver” |
Field | Source Data |
---|---|
account | “fio.oracle” |
transaction_id |
|
type | “sender” |
Trigger: fio.address:regaddress and action_ordinal = 1
Table: handles NEW RECORD or UPDATE (if exists based on handle
)
Field | Source Data |
---|---|
handle |
|
domain | Domain from ( |
account |
|
encryption_key |
|
encryption_key_set | “false” |
bundled_tx | “100” |
expiration |
|
status | “active" |
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “register” |
Table: account_activity NEW RECORD
Only insert if trace
→ action_traces
→ act
→ data
→ actor
is not trace
→ action_traces
→ act
→ data
→ owner_fio_public_key
hashed to account.
Field | Source Data |
---|---|
account |
|
transaction_id |
|
type | “receiver” |
Table: pub_addresses NEW RECORD
Field | Source Data |
---|---|
handle |
|
chain_code | “FIO” |
token_code | “FIO” |
public_address |
|
Trigger: fio.address:renewaddress and action_ordinal = 1
Table: handles UPDATE
Field | Source Data |
---|---|
handle |
|
bundled_tx | Increment current value by “100” |
expiration |
|
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “renew” |
Trigger: fio.address:xferaddress and action_ordinal = 1
Table: handles UPDATE
Field | Source Data |
---|---|
handle |
|
account |
|
encryption_key |
|
encryption_key_set | “false” |
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “transfer” |
Table: account_activity NEW RECORD
Field | Source Data |
---|---|
account |
|
transaction_id |
|
type | “receiver” |
Table: pub_addresses DELETE and NEW RECORD
Remove all objects matching in trace
→ action_traces
→ act
→ data
→ fio_address
and add:
Field | Source Data |
---|---|
handle |
|
chain_code | “FIO” |
token_code | “FIO” |
public_address |
|
Table: nft_signatures DELETE
Remove all objects matching in trace
→ action_traces
→ act
→ data
→ fio_address
Trigger: fio.address:addbundles and action_ordinal = 1
Table: handles UPDATE
Field | Source Data |
---|---|
handle |
|
bundled_tx | Increment current value by |
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “add_bundles” |
Trigger: fio.address:addaddress and action_ordinal = 1
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “add_pubbadd” |
Table: pub_addresses NEW RECORD or UPDATE (if exists)
For each object in trace
→ action_traces
→ act
→ data
→ public_addresses
update or insert new record
Field | Source Data |
---|---|
handle |
|
chain_code |
|
token_code |
|
public_address |
|
Table: handles UPDATE
Update only if encryption_key_set = false and chain_code = “FIO” and (token_code = “FIO” or token_code = “*”)
Field | Source Data |
---|---|
handle |
|
encryption_key |
|
Trigger: fio.address:remaddress and action_ordinal = 1
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “rem_pubbadd” |
Table: pub_addresses DELETE
Remove each object in trace
→ action_traces
→ act
→ data
→ public_addresses
which matches
Field | Source Data |
---|---|
handle |
|
chain_code |
|
token_code |
|
public_address |
|
Trigger: fio.address:remalladdr and action_ordinal = 1
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “rem_all_pubbadd” |
Table: pub_addresses DELETE
Remove all objects matching in trace
→ action_traces
→ act
→ data
→ fio_address
Trigger: fio.address:addnft and action_ordinal = 1
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “add_nft” |
Table: nft_signatures NEW RECORD or UPDATE (if exists)
For each object in trace
→ action_traces
→ act
→ data
→ nfts
update or insert new record
Field | Source Data |
---|---|
handle |
|
chain_code |
|
contract_address |
|
token_id |
|
url |
|
hash |
|
metadata |
|
Trigger: fio.address:remnft and action_ordinal = 1
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “rem_nft” |
Table: nft_signatures DELETE
Remove each object in trace
→ action_traces
→ act
→ data
→ nfts
which matches
Field | Source Data |
---|---|
handle |
|
chain_code |
|
contract_address |
|
token_id |
|
url |
|
hash |
|
metadata |
|
Trigger: fio.address:remallnfts and action_ordinal = 1
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “rem_all_nft” |
Table: nft_signatures DELETE
Remove all objects matching in trace
→ action_traces
→ act
→ data
→ fio_address
Trigger: fio.address:updcryptkey and action_ordinal = 1
Table: handles UPDATE
Field | Source Data |
---|---|
handle |
|
encryption_key |
|
encryption_key_set | “true” |
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “upd_encryptkey” |
Trigger: fio.address:regdomadd and action_ordinal = 1
Execute same as for trigger fio.address:regdomain and fio.address:regaddress except insert only once into account_activity
with type “receiver”.
Trigger: fio.address:burnaddress and action_ordinal = 1
Table: handles UPDATE
Field | Source Data |
---|---|
handle |
|
status | “burnt” |
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “self_burn” |
Table: pub_addresses DELETE
Remove all objects matching in trace
→ action_traces
→ act
→ data
→ fio_address
Table: nft_signatures DELETE
Remove all objects matching in trace
→ action_traces
→ act
→ data
→ fio_address
Trigger: fio.address:newfundsreq and action_ordinal = 1
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “new_request” |
Table: account_activity NEW RECORD
Field | Source Data |
---|---|
account |
|
transaction_id |
|
type | “receiver” |
Field | Source Data |
---|---|
account | Look-up |
transaction_id |
|
type | “receiver” |
Table: fio_requests NEW RECORD
Field | Source Data |
---|---|
id |
|
payee_handle |
|
payer_handle |
|
content |
|
payee_pub_key | Look-up |
payer_pub_key | Look-up |
status | “pending” |
transaction_id |
|
Trigger: fio.address:cancelfndreq and action_ordinal = 1
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “cancel_request” |
Table: fio_requests UPDATE
Field | Source Data |
---|---|
id |
|
status | “cancelled” |
Trigger: fio.address:recordobt and action_ordinal = 1
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id |
|
type | “record_obt” |
Table: account_activity NEW RECORD
Field | Source Data |
---|---|
account |
|
transaction_id |
|
type | “receiver” |
Field | Source Data |
---|---|
account | Look-up |
transaction_id |
|
type | “receiver” |
Table: fio_data NEW RECORD
Field | Source Data |
---|---|
request_id |
|
payee_handle |
|
payer_handle |
|
content |
|
payee_pub_key | Look-up |
payer_pub_key | Look-up |
status | “sent_to_blockchain” |
transaction_id |
|
Table: fio_requests UPDATE
Update only if trace
→ action_traces
→ act
→ data
→ fio_request_id
is present
Field | Source Data |
---|---|
id |
|
status | “sent_to_blockchain” |
Trigger: Table Deltas: added:false
and kvo->table:domains
Table: domains UPDATE
Field | Source Data |
---|---|
domain |
|
status | “burnt” |
Table: domain_activity NEW RECORD
Field | Source Data |
---|---|
domain |
|
transaction_id | |
type | “auto_burn” |
Trigger: Table Deltas: added:false
and kvo->table:fionames
Additional check needs to be performed:
If this handle burn was already processed as a result of
Trigger: fio.address:burnaddress and action_ordinal = 1
do not process this trigger.
Table: handles UPDATE
Field | Source Data |
---|---|
handle |
|
status | “burnt” |
Table: handle_activity NEW RECORD
Field | Source Data |
---|---|
handle |
|
transaction_id | |
type | “auto_burn” |
API
/get_blocks
Returns block information.
Request
Parameter | Description |
---|---|
time_start | OPTIONAL Filters block by |
time_end | OPTIONAL Filters block by |
producer | OPTIONAL Filters block by |
sort | OPTIONAL Sorting:
|
Query
Return records from blocks
which match all request parameters.
Sort by:
block_num_asc:
blocks
→number
ASCblock_num_desc:
blocks
→number
DESCtimestamp_asc:
blocks
→timestamp
ASCtimestamp_desc:
blocks
→timestamp
DESC
Response
Group | Field | Source Data |
---|---|---|
blocks | number |
|
blocks | id |
|
blocks | timestamp |
|
blocks | producer |
|
blocks | schedule_version |
|
pagination | limit | Supplied limit |
pagination | offset | Supplied offset |
pagination | total_records | Total number of transactions which meet the criteria |
pagination | next_offset | Offset to supply for next set of records: supplied offset + limit |
pagination | previous_offset | Offset to supply for previous set of records: supplied offset - limit |
Example
{ "blocks": [ { "number": "2", "id": "00000002953a8ab87a1855c0c40786e6a910a86cb2dd160f181418d05d233ea7", "timestamp": "2020-03-25T00:05:21.000", "producer": "eosio", "schedule_version": "1" } ], "pagination": { "limit": 100, "offset": 0, "total_records": 1, "next_offset": "", "previous_offset": "" } }
/get_transactions
Returns transaction information.
Request
Parameter | Description |
---|---|
time_start | OPTIONAL Filters block by |
time_end | OPTIONAL Filters block by |
block_number | OPTIONAL Filters block by |
action_account | OPTIONAL Filters block by |
action_name | OPTIONAL Filters block by |
impacted_account | OPTIONAL Filters by impacted account (see below) |
impacted_account_direction | OPTIONAL Filters by impacted account direction (see below)
|
include_traces | OPTIONAL If true include traces
|
sort | OPTIONAL Sorting of results:
|
limit | OPTIONAL Number of results to include. Default: 100 |
offset | OPTIONAL Offset for pagination. Default: 0 |
Query
Return records from transactions
which match all request parameters except:
impacted_account
is supplied:impacted_account_direction
is supplied and is “sender”Records from
transactions
whereimpacted_account
=account_activity->account
andtype
is “sender”
impacted_account_direction
is supplied and is “receiver”Records from
transactions
whereimpacted_account
=account_activity->account
andtype
is “receiver”
impacted_account_direction
is supplied and is “both” or not suppliedRecords from
transactions
whereimpacted_account
=account_activity->account
Please note: a single transaction can be affecting the same account as sender and receiver! In this case the same transaction should be returned twice.
Also include related data from:
blocks
timestamp
traces
All traces for transaction
token_transfers
id
matchestransaction_id
Include
payer_account
payee_account
amount
type
memo
domain_activity
id
matchestransaction_id
Include
domain
type
handle_activity
id
matchestransaction_id
Include
handle
type
token_staking
id
matchestransaction_id
Include
staker_account
amount
fio_requests
id
matchestransaction_id
Include
id
payee_handle
payer_handle
content
payee_pub_key
payer_pub_key
status
fio_data
id
matchestransaction_id
Include
request_id
payee_handle
payer_handle
content
payee_pub_key
payer_pub_key
status
Sort by:
timestamp_asc:
blocks
→timestamp
ASCtimestamp_desc:
blocks
→timestamp
DESC
Response
Group | Field | Source Data |
---|---|---|
transactions | id |
|
transactions | block_number |
|
transactions | timestamp |
|
transactions | action_account |
|
transactions | action_name |
|
transactions | sender_account |
|
transactions | receiver_account |
|
transactions | impacted_account_direction | See
Blank if impacted_account not supplied. |
transactions | tpid |
|
transactions | fee |
|
transactions | request_data |
|
transactions | request_data |
|
transactions | status |
|
transactions | type_specific_data | This element contains data which is specific to certain types of transactions from the joint tables:
|
transactions | traces array |
For each trace:
|
pagination | limit | Supplied limit |
pagination | offset | Supplied offset |
pagination | total_records | Total number of transactions which meet the criteria |
pagination | next_offset | Offset to supply for next set of records: supplied offset + limit |
pagination | previous_offset | Offset to supply for previous set of records: supplied offset - limit |
Example
{ "transactions": [ { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e", "block_number": "259024750", "timestamp": "2024-05-03T17:00:02.500", "action_account": "fio.address", "action_name": "regaddress", "sender_account": "xghrmfdenyu5", "receiver_account": "1hpxnziaw2ec", "impacted_account_direction": "", "tpid": "tpid@opera", "fee": "55.399150882", "request_data": { "fio_address": "turandb@opera", "owner_fio_public_key": "FIO5PJdEsMQ5Qd2otKVFSXru72KcMx4G2Vafo9MZ6NHttqYCiV5JP", "max_fee": 55399150882, "actor": "xghrmfdenyu5", "tpid": "tpid@opera" }, "response_data": "{\"status\": \"OK\",\"expiration\":\"2105-02-07T06:28:15\",\"fee_collected\":55399150882}", "status": "executed", "type_specific_data": { "token_transfers": [ { "payer_account": "xghrmfdenyu5", "payee_account": "fio.treasury", "amount": "55.399150882", "type": "blockchain_fee", "memo": "FIO fee: register_fio_address" }, { "payer_account": "eosio", "payee_account": "fio.treasury", "amount": "22.159660352", "type": "token_mint", "memo": "New tokens produced from reserves" } ], "domain_activity": [], "handle_activity": [ { "handle": "turandb@opera", "type": "register" } ], "token_staking": [], "fio_requests": [], "fio_data": [] }, "traces": [ { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-2", "receiver": "eosio", "action_ordinal": 2, "action_account": "eosio", "action_name": "newaccount", "request_data": { "creator": "fio.address", "name": "1hpxnziaw2ec", "owner": { "threshold": 1, "keys": [ { "key": "FIO5PJdEsMQ5Qd2otKVFSXru72KcMx4G2Vafo9MZ6NHttqYCiV5JP", "weight": 1 } ], "accounts": [], "waits": [] }, "active": { "threshold": 1, "keys": [ { "key": "FIO5PJdEsMQ5Qd2otKVFSXru72KcMx4G2Vafo9MZ6NHttqYCiV5JP", "weight": 1 } ], "accounts": [], "waits": [] } } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-3", "receiver": "fio.token", "action_ordinal": 3, "action_account": "fio.token", "action_name": "transfer", "request_data": { "from": "xghrmfdenyu5", "to": "fio.treasury", "quantity": "55.399150882 FIO", "memo": "FIO fee: register_fio_address" } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-4", "receiver": "fio.treasury", "action_ordinal": 4, "action_account": "fio.treasury", "action_name": "fdtnrwdupdat", "request_data": { "amount": 2769957544 } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-5", "receiver": "fio.token", "action_ordinal": 5, "action_account": "fio.token", "action_name": "mintfio", "request_data": { "to": "fio.treasury", "amount": 22159660352 } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-6", "receiver": "fio.tpid", "action_ordinal": 6, "action_account": "fio.tpid", "action_name": "updatebounty", "request_data": { "amount": 22159660352 } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-7", "receiver": "fio.tpid", "action_ordinal": 7, "action_account": "fio.tpid", "action_name": "updatetpid", "request_data": { "tpid": "tpid@opera", "owner": "xghrmfdenyu5", "amount": 27699575440 } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-8", "receiver": "fio.treasury", "action_ordinal": 8, "action_account": "fio.treasury", "action_name": "bppoolupdate", "request_data": { "amount": 33239490529 } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-9", "receiver": "fio.staking", "action_ordinal": 9, "action_account": "fio.staking", "action_name": "incgrewards", "request_data": "48fd823903000000" }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-10", "receiver": "eosio", "action_ordinal": 10, "action_account": "eosio", "action_name": "incram", "request_data": { "accountmn": "xghrmfdenyu5", "amount": 2560 } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-11", "receiver": "fio.token", "action_ordinal": 11, "action_account": "xghrmfdenyu5", "action_name": "transfer", "request_data": { "from": "xghrmfdenyu5", "to": "fio.treasury", "quantity": "55.399150882 FIO", "memo": "FIO fee: register_fio_address" } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-12", "receiver": "fio.treasury", "action_ordinal": 12, "action_account": "xghrmfdenyu5", "action_name": "transfer", "request_data": { "from": "xghrmfdenyu5", "to": "fio.treasury", "quantity": "55.399150882 FIO", "memo": "FIO fee: register_fio_address" } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-13", "receiver": "eosio", "action_ordinal": 13, "action_account": "eosio", "action_name": "updlocked", "request_data": { "owner": "xghrmfdenyu5", "amountremaining": 165900009925342 } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-14", "receiver": "fio.token", "action_ordinal": 14, "action_account": "fio.token", "action_name": "issue", "request_data": { "to": "fio.treasury", "quantity": "22.159660352 FIO", "memo": "New tokens produced from reserves" } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-15", "receiver": "eosio", "action_ordinal": 15, "action_account": "fio.token", "action_name": "issue", "request_data": { "to": "fio.treasury", "quantity": "22.159660352 FIO", "memo": "New tokens produced from reserves" } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-16", "receiver": "fio.treasury", "action_ordinal": 16, "action_account": "fio.token", "action_name": "issue", "request_data": { "to": "fio.treasury", "quantity": "22.159660352 FIO", "memo": "New tokens produced from reserves" } }, { "id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e-17", "receiver": "eosio", "action_ordinal": 17, "action_account": "eosio", "action_name": "crautoproxy", "request_data": { "proxy": "2m11cvdizsrg", "owner": "xghrmfdenyu5" } } ] } ], "pagination": { "limit": 100, "offset": 0, "total_records": 1, "next_offset": "", "previous_offset": "" } }
/get_accounts
Returns account information.
Request
Parameter | Description |
---|---|
time_start | OPTIONAL Filters accounts by |
time_end | OPTIONAL Filters accounts by |
sort | OPTIONAL Sorting:
|
limit | OPTIONAL Number of results to include. Default: 100 |
offset | OPTIONAL Offset for pagination. Default: 0 |
Query
Return records from accounts
which match all request parameters.
Sort by:
timestamp_asc:
timestamp
ASCtimestamp_desc:
timestamp
DESC
Response
Group | Field | Source Data |
---|---|---|
accounts | account |
|
accounts | public_key |
|
accounts | timestamp |
|
pagination | limit | Supplied limit |
pagination | offset | Supplied offset |
pagination | total_records | Total number of transactions which meet the criteria |
pagination | next_offset | Offset to supply for next set of records: supplied offset + limit |
pagination | previous_offset | Offset to supply for previous set of records: supplied offset - limit |
Example
{ "accounts": [ { "account": "1hpxnziaw2ec", "public_key": "FIO5PJdEsMQ5Qd2otKVFSXru72KcMx4G2Vafo9MZ6NHttqYCiV5JP" } ], "pagination": { "limit": 100, "offset": 0, "total_records": 1, "next_offset": "", "previous_offset": "" } }
/get_domains
Returns domain information.
Request
Parameter | Description |
---|---|
account | OPTIONAL Account of domain owner |
is_public | OPTIONAL is_public flag. Default is not present (both are returned)
|
status | OPTIONAL Status of domain
|
sort | OPTIONAL Sorting:
|
limit | OPTIONAL Number of results to include. Default: 100 |
offset | OPTIONAL Offset for pagination. Default: 0 |
Query
Return records from domains
which match all request parameters.
Sort by:
alphabetical:
domain
ASCexpiration_asc:
expiration
ASCexpiration_asc:
expiration
DESC
Response
Group | Field | Source Data |
---|---|---|
domains | domain |
|
domains | account |
|
domains | is_public |
|
domains | expiration |
|
domains | status |
|
pagination | limit | Supplied limit |
pagination | offset | Supplied offset |
pagination | total_records | Total number of transactions which meet the criteria |
pagination | next_offset | Offset to supply for next set of records: supplied offset + limit |
pagination | previous_offset | Offset to supply for previous set of records: supplied offset - limit |
Example
{ "domains": [ { "domain": "bob", "account": "1hpxnziaw2ec", "is_public": false, "expiration": "2024-05-03T17:00:02.500", "status": "active" } ], "pagination": { "limit": 100, "offset": 0, "total_records": 1, "next_offset": "", "previous_offset": "" } }
/get_handles
Returns handle information.
Request
Parameter | Description |
---|---|
handle | OPTIONAL Handle name |
account | OPTIONAL Account of handle owner |
domain | OPTIONAL Domain of handle |
status | OPTIONAL Status of handle
|
limit | OPTIONAL Number of results to include. Default: 100 |
offset | OPTIONAL Offset for pagination. Default: 0 |
Query
Return records from handles
which match all request parameters.
Sort by:
alphabetical:
handle
ASC
Response
Group | Field | Source Data |
---|---|---|
handles | handle |
|
handles | account |
|
handles | domain |
|
handles | encryption_key |
|
handles | encryption_key_set |
|
handles | bundled_tx |
|
handles | expiration |
|
handles | status |
|
pagination | limit | Supplied limit |
pagination | offset | Supplied offset |
pagination | total_records | Total number of transactions which meet the criteria |
pagination | next_offset | Offset to supply for next set of records: supplied offset + limit |
pagination | previous_offset | Offset to supply for previous set of records: supplied offset - limit |
Example
{ "handles": [ { "handle": "turandb@opera", "account": "1hpxnziaw2ec", "domain": "opera", "encryption_key": "FIO5PJdEsMQ5Qd2otKVFSXru72KcMx4G2Vafo9MZ6NHttqYCiV5JP", "encryption_key_set": false, "bundled_tx": 100, "expiration": "2025-05-03T17:00:02.500", "status": "active" } ], "pagination": { "limit": 100, "offset": 0, "total_records": 1, "next_offset": "", "previous_offset": "" } }
/get_pub_addresses
Returns pub_addresses information.
Request
Parameter | Description |
---|---|
handle | OPTIONAL Handle name |
account | OPTIONAL Account of handle owner |
chain_code | OPTIONAL Chain code |
token_code | OPTIONAL Token code |
public_address | OPTIONAL Public Address |
limit | OPTIONAL Number of results to include. Default: 100 |
offset | OPTIONAL Offset for pagination. Default: 0 |
Query
Return records from pub_addresses
which match all request parameters.
account
requires join on handles
handle status must be active
Sort by:
alphabetical:
handle
ASC
Response
Group | Field | Source Data |
---|---|---|
handles | handle |
|
handles | account |
|
handles → pub_addresses | chain_code |
|
handles → pub_addresses | token_code |
|
handles → pub_addresses | public_address |
|
pagination | limit | Supplied limit |
pagination | offset | Supplied offset |
pagination | total_records | Total number of transactions which meet the criteria |
pagination | next_offset | Offset to supply for next set of records: supplied offset + limit |
pagination | previous_offset | Offset to supply for previous set of records: supplied offset - limit |
Example
{ "handles": [ { "handle": "turandb@opera", "account": "1hpxnziaw2ec", "pub_addresses": [ { "chain_code": "FIO", "token_code": "FIO", "public_address": "FIO5PJdEsMQ5Qd2otKVFSXru72KcMx4G2Vafo9MZ6NHttqYCiV5JP" }, { "chain_code": "ETH", "token_code": "*", "public_address": "0x00000000" } ] } ], "pagination": { "limit": 100, "offset": 0, "total_records": 1, "next_offset": "", "previous_offset": "" } }
/get_nft_signatures
Returns nft_signatures information.
Request
Parameter | Description |
---|---|
handle | OPTIONAL Handle name |
account | OPTIONAL Account of handle owner |
chain_code | OPTIONAL Chain code |
contract_address | OPTIONAL Contract Address |
token_id | OPTIONAL Token ID |
limit | OPTIONAL Number of results to include. Default: 100 |
offset | OPTIONAL Offset for pagination. Default: 0 |
Query
Return records from nft_signatures
which match all request parameters.
account
requires join on handles
handle status must be active
Sort by:
alphabetical:
handle
ASC
Response
Group | Field | Source Data |
---|---|---|
handles | handle |
|
handles | account |
|
handles → nft_signatures | chain_code |
|
handles → nft_signatures | contract_address |
|
handles → nft_signatures | token_id |
|
handles → nft_signatures | url |
|
handles → nft_signatures | hash |
|
handles → nft_signatures | metadata |
|
pagination | limit | Supplied limit |
pagination | offset | Supplied offset |
pagination | total_records | Total number of transactions which meet the criteria |
pagination | next_offset | Offset to supply for next set of records: supplied offset + limit |
pagination | previous_offset | Offset to supply for previous set of records: supplied offset - limit |
Example
{ "handles": [ { "handle": "turandb@opera", "account": "1hpxnziaw2ec", "nft_signatures": [ { "chain_code": "MATIC", "contract_address": "0x7bfc7492B32E40D7Dd9B0A241B5d0Ba9CCf1632B", "token_id": "24254130", "url": "", "hash": "", "metadata": "" } ] } ], "pagination": { "limit": 100, "offset": 0, "total_records": 1, "next_offset": "", "previous_offset": "" } }
/get_token_transfers
Returns token_transfers information.
Request
Parameter | Description |
---|---|
time_start | OPTIONAL Filters by |
time_end | OPTIONAL Filters by |
payer_account | OPTIONAL Payer account |
payee_account | OPTIONAL Payee account |
type | OPTIONAL Tranfser type |
limit | OPTIONAL Number of results to include. Default: 100 |
offset | OPTIONAL Offset for pagination. Default: 0 |
Query
Return records from token_transfers
which match all request parameters.
timestamp
requires join on transactions
Sort by:
alphabetical:
timestamp
ASC
Response
Group | Field | Source Data |
---|---|---|
token_transfers | transaction_id |
|
token_transfers | timestamp |
|
token_transfers | payer_account |
|
token_transfers | payee_account |
|
token_transfers | amount |
|
token_transfers | type |
|
token_transfers | memo |
|
pagination | limit | Supplied limit |
pagination | offset | Supplied offset |
pagination | total_records | Total number of transactions which meet the criteria |
pagination | next_offset | Offset to supply for next set of records: supplied offset + limit |
pagination | previous_offset | Offset to supply for previous set of records: supplied offset - limit |
Example
{ "token_transfers": [ { "transaction_id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e", "timestamp": "2024-05-03T17:00:02.500", "payer_account": "xghrmfdenyu5", "payee_account": "fio.treasury", "amount": "55.399150882", "type": "blockchain_fee", "memo": "FIO fee: register_fio_address" } ], "pagination": { "limit": 100, "offset": 0, "total_records": 1, "next_offset": "", "previous_offset": "" } }
/get_fio_requests
Returns fio_request information.
Request
Parameter | Description |
---|---|
time_start | OPTIONAL Filters by |
time_end | OPTIONAL Filters by |
payee_handle | OPTIONAL Payee FIO Handle |
payer_handle | OPTIONAL Payer FIO Handle |
payee_account | OPTIONAL Payee account |
payer_account | OPTIONAL Payer account |
status | OPTIONAL Request status |
limit | OPTIONAL Number of results to include. Default: 100 |
offset | OPTIONAL Offset for pagination. Default: 0 |
Query
Return records from fio_request
which match all request parameters.
timestamp
requires join on transactions
payee_account
and payer_account
requires join on handles
Sort by:
alphabetical:
timestamp
ASC
Response
Group | Field | Source Data |
---|---|---|
fio_requests | id |
|
fio_requests | timestamp |
|
fio_requests | payer_account |
|
fio_requests | payee_account |
|
fio_requests | payee_handle |
|
fio_requests | payer_handle |
|
fio_requests | content |
|
fio_requests | payee_pub_key |
|
fio_requests | payer_pub_key |
|
fio_requests | status |
|
fio_requests | transaction_id |
|
pagination | limit | Supplied limit |
pagination | offset | Supplied offset |
pagination | total_records | Total number of transactions which meet the criteria |
pagination | next_offset | Offset to supply for next set of records: supplied offset + limit |
pagination | previous_offset | Offset to supply for previous set of records: supplied offset - limit |
Example
{ "fio_requests": [ { "id": 88, "timestamp": "2020-03-13T19:52:08", "payee_account": "xghrmfdenyu5", "payer_account": "1hpxnziaw2ec", "payee_handle": "pawel@fiotestnet", "payer_handle": "pawel@person", "content": "v6Kvk+CvQBGua4V1YpYjBekOzqA9LHWFfKXhfBnhewdGGm5PhPbwC8YQAIISpu/4mGDGR9JhCkyxLFH42Ei/EpSlUUsLD+3H5ckqQm9xFQc+lZdeOW9+6sMnePLsVTGvGF55Hqd1CE3xZaj6OjBz9A==", "payee_pub_key": "FIO8h1Aan6DZJsFjH91BGsQfNt2FsYbVyKeXFETNvYtTW9vaU81ay", "payer_pub_key": "FIO55BB3WmX7F1VDX7s8LjevJrU8g9G9ptpAmoZu7szYYBw19EZW4", "status": "requested", "transaction_id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e" } ], "pagination": { "limit": 100, "offset": 0, "total_records": 1, "next_offset": "", "previous_offset": "" } }
/get_fio_data
Returns fio_data information.
Request
Parameter | Description |
---|---|
time_start | OPTIONAL Filters by |
time_end | OPTIONAL Filters by |
payee_handle | OPTIONAL Payee FIO Handle |
payer_handle | OPTIONAL Payer FIO Handle |
payee_account | OPTIONAL Payee account |
payer_account | OPTIONAL Payer account |
status | OPTIONAL Data status |
limit | OPTIONAL Number of results to include. Default: 100 |
offset | OPTIONAL Offset for pagination. Default: 0 |
Query
Return records from fio_data
which match all request parameters.
timestamp
requires join on transactions
payee_account
and payer_account
requires join on handles
Sort by:
alphabetical:
timestamp
ASC
Response
Group | Field | Source Data |
---|---|---|
fio_data | request_id |
|
fio_data | timestamp |
|
fio_data | payer_account |
|
fio_data | payee_account |
|
fio_data | payee_handle |
|
fio_data | payer_handle |
|
fio_data | content |
|
fio_data | payee_pub_key |
|
fio_data | payer_pub_key |
|
fio_data | status |
|
fio_data | transaction_id |
|
pagination | limit | Supplied limit |
pagination | offset | Supplied offset |
pagination | total_records | Total number of transactions which meet the criteria |
pagination | next_offset | Offset to supply for next set of records: supplied offset + limit |
pagination | previous_offset | Offset to supply for previous set of records: supplied offset - limit |
Example
{ "fio_data": [ { "request_id": 88, "timestamp": "2020-03-13T19:52:08", "payee_account": "xghrmfdenyu5", "payer_account": "1hpxnziaw2ec", "payee_handle": "pawel@fiotestnet", "payer_handle": "pawel@person", "content": "v6Kvk+CvQBGua4V1YpYjBekOzqA9LHWFfKXhfBnhewdGGm5PhPbwC8YQAIISpu/4mGDGR9JhCkyxLFH42Ei/EpSlUUsLD+3H5ckqQm9xFQc+lZdeOW9+6sMnePLsVTGvGF55Hqd1CE3xZaj6OjBz9A==", "payee_pub_key": "FIO8h1Aan6DZJsFjH91BGsQfNt2FsYbVyKeXFETNvYtTW9vaU81ay", "payer_pub_key": "FIO55BB3WmX7F1VDX7s8LjevJrU8g9G9ptpAmoZu7szYYBw19EZW4", "status": "sent_to_blockchain", "transaction_id": "d3dcd291eb7caadab12f2b9bcacdc5df6b8a5c1455072d9454a3b43956677b6e" } ], "pagination": { "limit": 100, "offset": 0, "total_records": 1, "next_offset": "", "previous_offset": "" } }
0 Comments