# 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"
            }
          }
        }
      }
    ]
  }
}
```
