# Data API

The data API methods can be used to fetch block, transaction, and other related data from the chain. The available methods have been classified based on the endpoints and listed below.

## Network

### **Fetch the list of available networks**

Method: **POST**

URL: `/network/list`

Sample Request:

```javascript
{
  "metadata": {}
}
```

Sample Response:

```javascript
{
  "network_identifiers": [
    {
      "blockchain": "ont",
      "network": "mainnet"
    }
  ]
}
```

### **Fetch network options**

Method: **POST**

URL: `/network/options`

Sample Request:

```javascript
{
  "network_identifier": {
    "blockchain": "ont",
    "network": "mainnet"
  }
}
```

Sample Response:

```javascript
{
  "version": {
        "rosetta_version": "1.4.0",
        "node_version": "1.11.0"
  },
  "allow": {
    "operation_statuses": [
      {
        "status": "SUCCESS",
        "successful": true
      },
      {
        "status": "FAILED",
        "successful": false
      }
    ],
    "operation_types": ["transfer"],
    "errors": [
      {
        "code": 400,
        "message": "network identifier is not supported",
        "retriable": false
      },
      {
        "code": 401,
        "message": "block identifier is empty",
        "retriable": false
      },
      {
        "code": 402,
        "message": "block index is invalid",
        "retriable": false
      },
      {
        "code": 403,
        "message": "get block failed",
        "retriable": true
      },
      {
        "code": 404,
        "message": "block hash is invalid",
        "retriable": false
      },
      {
        "code": 405,
        "message": "get transaction failed",
        "retriable": true
      },
      {
        "code": 406,
        "message": "transaction hash is invalid",
        "retriable": false
      },
      {
        "code": 407,
        "message": "commit transaction failed",
        "retriable": false
      },
      {
        "code": 408,
        "message": "tx hash is invalid",
        "retriable": false
      },
      {
        "code": 409,
        "message": "block is not exist",
        "retriable": false
      },
      {
        "code": 500,
        "message": "service not realize",
        "retriable": false
      },
      {
        "code": 501,
        "message": "addr is invalid",
        "retriable": true
      },
      {
        "code": 502,
        "message": "get balance error",
        "retriable": true
      },
      {
        "code": 503,
        "message": "parse int error",
        "retriable": true
      },
      {
        "code": 504,
        "message": "json marshal failed",
        "retriable": false
      },
      {
        "code": 505,
        "message": "parse tx payload failed",
        "retriable": false
      },
      {
        "code": 506,
        "message": "currency not config",
        "retriable": false
      },
      {
        "code": 507,
        "message": "params error",
        "retriable": true
      },
      {
        "code": 508,
        "message": "contract addr invalid",
        "retriable": true
      },
      {
        "code": 509,
        "message": "preExecute contract failed",
        "retriable": false
      },
      {
        "code": 510,
        "message": "query balance failed",
        "retriable": true
      }
    ]
  }
}
```

### **Fetch the network status**

Method: **POST**

URL: `/network/status`

Sample Request:

```javascript
{
  "network_identifier": {
    "blockchain": "ont",
    "network": "mainnet"
  }
}
```

Sample Response:

```javascript
{
  "current_block_identifier": {
    "index": 4789126,
    "hash": "76fcf0fbd5e979721fe52e472ac79eb26f4bc502c371508574c0e03386be20e6"
  },
  "current_block_timestamp": 1560312815000,
  "genesis_block_identifier": {
    "index": 0,
    "hash": "1b8fa7f242d0eeb4395f89cbb59e4c29634047e33245c4914306e78a88e14ce5"
  },
  "peers": [
    {
      "peer_id": "000000000000000000000000b41fe9ceaaaa4d7b",
      "metadata": {
        "address": "40.113.237.243:20338",
        "height": 8454242
      }
    },
    {
      "peer_id": "000000000000000000000000a4f0c524d8efd6a8",
      "metadata": {
        "address": "139.219.141.104:20338",
        "height": 8454242
      }
    },
    {
      "peer_id": "0000000000000000000000008e6528f4659f3112",
      "metadata": {
        "address": "50.18.219.74:20338",
        "height": 8454242
      }
    }
  ]
}
```

## Account

### **Fetch account balance**

Method: **POST**

URL: `/account/balance`

Sample Request:

```javascript
{
  "network_identifier": {
    "blockchain": "ont",
    "network": "mainnet"
  },
  "account_identifier": {
    "address": "AFmseVrdL9f9oyCzZefL9tG6UbviEH9ugK",
    "metadata": {}
  },
  "block_identifier": {
    "index": 310
  }
}
```

Sample Response:

```javascript
{
  "block_identifier": {
    "index": 310,
    "hash": "11405500403779cff364803bbd7fe4dc74ba9119015fd79473c188b727769c52"
  },
  "balances": [
    {
      "value": "14700000000000000",
      "currency": {
        "symbol": "ONT",
        "decimals": 9,
        "metadata": {
          "ContractAddress": "0100000000000000000000000000000000000000",
          "TokenType": "Governance Token"
        }
      }
    },
    {
      "value": "1750000140000000000000",
      "currency": {
        "symbol": "ONG",
        "decimals": 18,
        "metadata": {
          "ContractAddress": "0200000000000000000000000000000000000000",
          "TokenType": "Utility Token"
        }
      }
    }
  ]
}
```

## Block

### **Fetch block details**

Method: **POST**

URL: `/block`

Sample Request:

```javascript
{
  "network_identifier": {
    "blockchain": "ont",
    "network": "mainnet"
  },
  "block_identifier": {
    "index": 54
  }
}
```

```javascript
{
  "block": {
    "block_identifier": {
      "index": 54,
      "hash": "790ea8942e5722c75ba638312caa8c1380c41da4c145d6493ae510eb6017c5f3"
    },
    "parent_block_identifier": {
      "index": 53,
      "hash": "2b52c7fcdbdcd362211e1646fa6351c8f6fd4cbfa520fe7857133e59061ff348"
    },
    "timestamp": 1530389834000,
    "transactions": [
      {
        "transaction_identifier": {
          "hash": "20247d9df50d830b8978a5c49313a6f8a118fd5bb9c2950e3c7f95f5ac6410f6"
        },
        "operations": [
          {
            "operation_identifier": {
              "index": 0
            },
            "type": "transfer",
            "status": "SUCCESS",
            "account": {
              "address": "AJMFNZL5jGjZJEhBrJfVLHJeJ3KwiczJ6B"
            },
            "amount": {
              "value": "-1000000000000000000",
              "currency": {
                "symbol": "ONT",
                "decimals": 9,
                "metadata": {
                  "ContractAddress": "0100000000000000000000000000000000000000",
                  "TokenType": "Governance Token"
                }
              }
            }
          },
          {
            "operation_identifier": {
              "index": 1
            },
            "related_operations": [
              {
                "index": 0
              }
            ],
            "type": "transfer",
            "status": "SUCCESS",
            "account": {
              "address": "AWyEMxiLUVr5MeVJe3Fw5Xsij7iZUmfYyk"
            },
            "amount": {
              "value": "1000000000000000000",
              "currency": {
                "symbol": "ONT",
                "decimals": 9,
                "metadata": {
                  "ContractAddress": "0100000000000000000000000000000000000000",
                  "TokenType": "Governance Token"
                }
              }
            }
          }
        ]
      }
    ]
  }
}
```

{% hint style="info" %}
Please note that the transaction record consists of **two** operations, i.e. the **from** operation, and the **to** operation. The transaction amount for the **from** operation is **negative**, while the amount for the **to** operation is equal and **positive**.
{% endhint %}

The currency field contains token details. The two tokens are denoted in the following manner:

**ONT Parameters**

```javascript
{
    "symbol": "ONT",
    "decimals": 9,
    "metadata": {
        "ContractAddress": "0100000000000000000000000000000000000000",
        "TokenType": "Governance Token"
        }
}
```

**ONG Parameters**

```javascript
{
    "symbol": "ONG",
    "decimals": 18,
    "metadata": {
        "ContractAddress": "0200000000000000000000000000000000000000",
        "TokenType": "Utility Token"
        }
}
```

### **Fetch transaction information from a block**

Method: **POST**

URL: `/block/transaction`

Sample Request:

```javascript
{
  "network_identifier": {
    "blockchain": "ont",
    "network": "mainnet"
  },
  "block_identifier": {
    "index": 54,
    "hash": "790ea8942e5722c75ba638312caa8c1380c41da4c145d6493ae510eb6017c5f3"
  },
  "transaction_identifier": {
    "hash": "20247d9df50d830b8978a5c49313a6f8a118fd5bb9c2950e3c7f95f5ac6410f6"
  }
}
```

Sample Response:

```javascript
{
  "transaction": {
    "transaction_identifier": {
      "hash": "20247d9df50d830b8978a5c49313a6f8a118fd5bb9c2950e3c7f95f5ac6410f6"
    },
    "operations": [
      {
        "operation_identifier": {
          "index": 0
        },
        "type": "transfer",
        "status": "SUCCESS",
        "account": {
          "address": "AJMFNZL5jGjZJEhBrJfVLHJeJ3KwiczJ6B"
        },
        "amount": {
          "value": "-1000000000000000000",
          "currency": {
            "symbol": "ONT",
            "decimals": 9,
            "metadata": {
              "ContractAddress": "0100000000000000000000000000000000000000",
              "TokenType": "Governance Token"
            }
          }
        }
      },
      {
        "operation_identifier": {
          "index": 1
        },
        "related_operations": [
          {
            "index": 0
          }
        ],
        "type": "transfer",
        "status": "SUCCESS",
        "account": {
          "address": "AWyEMxiLUVr5MeVJe3Fw5Xsij7iZUmfYyk"
        },
        "amount": {
          "value": "1000000000000000000",
          "currency": {
            "symbol": "ONT",
            "decimals": 9,
            "metadata": {
              "ContractAddress": "0100000000000000000000000000000000000000",
              "TokenType": "Governance Token"
            }
          }
        }
      }
    ]
  }
}
```

## Mempool

### **Fetch all mempool transactions**

Method: **POST**

URL: `/mempool`

Sample Request:

```javascript
{
  "network_identifier": {
    "blockchain": "ont",
    "network": "mainnet"
  }
}
```

Sample Response:

```javascript
{
  "transaction_identifiers": [
    {
      "hash": "<tx hash>"
    }
  ]
}
```

### **Fetch details for a mempool transaction**

Method: **POST**

URL: `/mempool/transaction`

Sample Request:

```javascript
{
  "network_identifier": {
    "blockchain": "ont",
    "network": "mainnet"
  },
  "transaction_identifier": {
    "hash": "20247d9df50d830b8978a5c49313a6f8a118fd5bb9c2950e3c7f95f5ac6410f6"
  }
}
```

Sample Response:

```javascript
{
  "transaction": {
    "transaction_identifier": {
      "hash": "20247d9df50d830b8978a5c49313a6f8a118fd5bb9c2950e3c7f95f5ac6410f6"
    },
    "operations": [
      {
        "operation_identifier": {
          "index": 0
        },
        "type": "transfer",
        "status": "SUCCESS",
        "account": {
          "address": "AJMFNZL5jGjZJEhBrJfVLHJeJ3KwiczJ6B"
        },
        "amount": {
          "value": "-1000000000000000000",
          "currency": {
            "symbol": "ONT",
            "decimals": 9,
            "metadata": {
              "ContractAddress": "0100000000000000000000000000000000000000",
              "TokenType": "Governance Token"
            }
          }
        }
      },
      {
        "operation_identifier": {
          "index": 1
        },
        "related_operations": [
          {
            "index": 0
          }
        ],
        "type": "transfer",
        "status": "SUCCESS",
        "account": {
          "address": "AWyEMxiLUVr5MeVJe3Fw5Xsij7iZUmfYyk"
        },
        "amount": {
          "value": "1000000000000000000",
          "currency": {
            "symbol": "ONT",
            "decimals": 9,
            "metadata": {
              "ContractAddress": "0100000000000000000000000000000000000000",
              "TokenType": "Governance Token"
            }
          }
        }
      }
    ]
  }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ont.io/developer-tools/api/rosetta-node-api/data-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
