# Tables

Tables Api

## &#x20;Get table item (v2)

> &#x20;Get the value at the \`key\` specified in the request body from the Move table identified by the \`{table\_handle}\` path parameter.\
> &#x20;The key must be represented as an instance of \`key\_type\` in the Move state, and the value must be represented as an instance of \`value\_type\`.\
> &#x20;If either the key or the value cannot be parsed into the corresponding type then the API will return status code 400.\
> \
> &#x20;\## Example of body\
> &#x20;\`\`\`json\
> &#x20;{\
> &#x20;  "key\_type": "u64",\
> &#x20;  "value\_type": "0x1::multisig\_voting::Proposal<0x1::governance\_proposal::GovernanceProposal>",\
> &#x20;  "key": "12"\
> &#x20;}\
> \`\`\`\
> &#x20;\`\`\`json\
> &#x20;{\
> &#x20;  "key\_type": "u64",\
> &#x20;  "value\_type": "0x1::string::String",\
> &#x20;  "key": "42"\
> &#x20;}\
> \`\`\`

````json
{"openapi":"3.1.0","info":{"title":"Supra RPC Node","version":"59f32573d4ca6e9e0f8e04896600ea56ff9fd0bc"},"tags":[{"name":"Tables","description":"Tables Api"}],"servers":[{"url":"https://rpc-testnet.supra.com","description":"RPC For Supra Scan and Faucet"},{"url":"https://rpc-wallet-testnet.supra.com","description":"RPC For Wallet"},{"url":"https://rpc-suprascan-testnet.supra.com","description":"RPC For Suprascan"},{"url":"https://rpc-archive-testnet.supra.com","description":"RPC For Suprascan"},{"url":"https://rpc-suprascan-reprocessing-testnet.supra.com","description":"RPC For Suprascan"},{"url":"https://rpc-testnet1.supra.com","description":"RPC For nodeops group1"},{"url":"http://localhost:27000","description":"LocalNet"}],"paths":{"/rpc/v2/tables/{table_handle}/item":{"post":{"tags":["Tables"],"summary":" Get table item (v2)","description":" Get the value at the `key` specified in the request body from the Move table identified by the `{table_handle}` path parameter.\n The key must be represented as an instance of `key_type` in the Move state, and the value must be represented as an instance of `value_type`.\n If either the key or the value cannot be parsed into the corresponding type then the API will return status code 400.\n\n ## Example of body\n ```json\n {\n   \"key_type\": \"u64\",\n   \"value_type\": \"0x1::multisig_voting::Proposal<0x1::governance_proposal::GovernanceProposal>\",\n   \"key\": \"12\"\n }\n```\n ```json\n {\n   \"key_type\": \"u64\",\n   \"value_type\": \"0x1::string::String\",\n   \"key\": \"42\"\n }\n```","operationId":"table_item_by_key","parameters":[{"name":"table_handle","in":"path","description":"Table handle to lookup. Should be a valid Move address retrieved from the account resources API.","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Request containing item key and value types and item key itself","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TableItemRequest"}}},"required":true},"responses":{"200":{"description":"Item of the table","headers":{},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveValue"}}}},"400":{"description":"Provided values cannot be parsed into the corresponding types.","headers":{}}}}}},"components":{"schemas":{"TableItemRequest":{"type":"object","description":"Describes body of the Table item request by item key.","required":["key_type","value_type","key"],"properties":{"key_type":{"type":"string","description":"String representation of an on-chain Move type tag that is exposed in transaction payload.\nValues:\n- bool\n- u8\n- u16\n- u32\n- u64\n- u128\n- u256\n- address\n- signer\n- vector: `vector<{non-reference MoveTypeId}>`\n- struct: `{address}::{module_name}::{struct_name}::<{generic types}>`\n\nVector type value examples:\n- `vector<u8>`\n- `vector<vector<u64>>`\n- `vector<0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>>`\n\nStruct type value examples:\n- `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>`\n- `0x1::account::Account`\n\nNote:\n1. Empty chars should be ignored when comparing 2 struct tag ids.\n2. When used in a URL path, should be encoded by url-encoding (AKA percent-encoding)."},"value_type":{"type":"string","description":"String representation of an on-chain Move type tag that is exposed in transaction payload.\nValues:\n- bool\n- u8\n- u16\n- u32\n- u64\n- u128\n- u256\n- address\n- signer\n- vector: `vector<{non-reference MoveTypeId}>`\n- struct: `{address}::{module_name}::{struct_name}::<{generic types}>`\n\nVector type value examples:\n- `vector<u8>`\n- `vector<vector<u64>>`\n- `vector<0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>>`\n\nStruct type value examples:\n- `0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>`\n- `0x1::account::Account`\n\nNote:\n1. Empty chars should be ignored when comparing 2 struct tag ids.\n2. When used in a URL path, should be encoded by url-encoding (AKA percent-encoding)."},"key":{"description":"The value of the table item's key."}}},"MoveValue":{"oneOf":[{"type":"object","description":"A u8 Move type","required":["U8"],"properties":{"U8":{"type":"integer","format":"u-int8","description":"A u8 Move type","minimum":0}}},{"type":"object","required":["U16"],"properties":{"U16":{"type":"integer","format":"u-int16","minimum":0}}},{"type":"object","required":["U32"],"properties":{"U32":{"type":"integer","format":"u-int32","minimum":0}}},{"type":"object","description":"A string encoded U64.","required":["U64"],"properties":{"U64":{"type":"string","description":"A string encoded U64."}}},{"type":"object","description":"A string encoded U128.","required":["U128"],"properties":{"U128":{"type":"string","description":"A string encoded U128."}}},{"type":"object","description":"A string encoded U256.","required":["U256"],"properties":{"U256":{"type":"string","description":"A string encoded U256."}}},{"type":"object","description":"A bool Move type","required":["Bool"],"properties":{"Bool":{"type":"boolean","description":"A bool Move type"}}},{"type":"object","description":"The address of an account\n\nThis is represented in a string as a 64 character hex string, sometimes\nshortened by stripping leading 0s, and adding a 0x.","required":["Address"],"properties":{"Address":{"type":"string","description":"The address of an account\n\nThis is represented in a string as a 64 character hex string, sometimes\nshortened by stripping leading 0s, and adding a 0x."}}},{"type":"object","description":"A vector Move type.  May have any other [`MoveValue`] nested inside it","required":["Vector"],"properties":{"Vector":{"type":"array","items":{"type":"string"},"description":"A vector Move type.  May have any other [`MoveValue`] nested inside it"}}},{"type":"object","description":"All bytes (Vec<u8>) data is represented as hex-encoded string prefixed with `0x` and fulfilled with\ntwo hex digits per byte.\n\nUnlike the `Address` type, HexEncodedBytes will not trim any zeros.","required":["Bytes"],"properties":{"Bytes":{"type":"string","description":"All bytes (Vec<u8>) data is represented as hex-encoded string prefixed with `0x` and fulfilled with\ntwo hex digits per byte.\n\nUnlike the `Address` type, HexEncodedBytes will not trim any zeros."}}},{"type":"object","description":"This is a JSON representation of some data within an account resource. More specifically,\nit is a map of strings to arbitrary JSON values / objects, where the keys are top level\nfields within the given resource.\n\nTo clarify, you might query for 0x1::account::Account and see the example data.\n\nMove `bool` type value is serialized into `boolean`.\n\nMove `u8`, `u16` and `u32` type value is serialized into `integer`.\n\nMove `u64`, `u128` and `u256` type value is serialized into `string`.\n\nMove `address` type value (32 byte Supra account address) is serialized into a HexEncodedBytes string.\nFor example:\n  - `0x1`\n  - `0x1668f6be25668c1a17cd8caf6b8d2f25`\n\nMove `vector` type value is serialized into `array`, except `vector<u8>` which is serialized into a\nHexEncodedBytes string with `0x` prefix.\nFor example:\n  - `vector<u64>{255, 255}` => `[\\\"255\\\", \\\"255\\\"]`\n  - `vector<u8>{255, 255}` => `0xffff`\n\nMove `struct` type value is serialized into `object` that looks like this (except some Move stdlib types, see the following section):\n  ```json\n  {\n    field1_name: field1_value,\n    field2_name: field2_value,\n    ......\n  }\n  ```\n\nFor example:\n  `{ \\\"created\\\": \\\"0xa550c18\\\", \\\"role_id\\\": \\\"0\\\" }`\n\n**Special serialization for Move stdlib types**:\n  - [0x1::string::String]\n    is serialized into `string`. For example, struct value `0x1::string::String{bytes: b\\\"Hello World!\\\"}`\n    is serialized as `\\\"Hello World!\\\"` in JSON.\n","required":["Struct"],"properties":{"Struct":{"type":"object","description":"This is a JSON representation of some data within an account resource. More specifically,\nit is a map of strings to arbitrary JSON values / objects, where the keys are top level\nfields within the given resource.\n\nTo clarify, you might query for 0x1::account::Account and see the example data.\n\nMove `bool` type value is serialized into `boolean`.\n\nMove `u8`, `u16` and `u32` type value is serialized into `integer`.\n\nMove `u64`, `u128` and `u256` type value is serialized into `string`.\n\nMove `address` type value (32 byte Supra account address) is serialized into a HexEncodedBytes string.\nFor example:\n  - `0x1`\n  - `0x1668f6be25668c1a17cd8caf6b8d2f25`\n\nMove `vector` type value is serialized into `array`, except `vector<u8>` which is serialized into a\nHexEncodedBytes string with `0x` prefix.\nFor example:\n  - `vector<u64>{255, 255}` => `[\\\"255\\\", \\\"255\\\"]`\n  - `vector<u8>{255, 255}` => `0xffff`\n\nMove `struct` type value is serialized into `object` that looks like this (except some Move stdlib types, see the following section):\n  ```json\n  {\n    field1_name: field1_value,\n    field2_name: field2_value,\n    ......\n  }\n  ```\n\nFor example:\n  `{ \\\"created\\\": \\\"0xa550c18\\\", \\\"role_id\\\": \\\"0\\\" }`\n\n**Special serialization for Move stdlib types**:\n  - [0x1::string::String]\n    is serialized into `string`. For example, struct value `0x1::string::String{bytes: b\\\"Hello World!\\\"}`\n    is serialized as `\\\"Hello World!\\\"` in JSON.\n"}}},{"type":"object","description":"A string Move type","required":["String"],"properties":{"String":{"type":"string","description":"A string Move type"}}}],"description":"An enum of the possible Move value types."}}}}
````


---

# 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://supraoracles.gitbook.io/supra/network/move/rest-api/testnet/tables.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.
