cactus-agent
Version:
cactus rpc/websocket client library
756 lines (690 loc) • 13.7 kB
Markdown
# Data Layer RPC API
## Usage
You need to create RPC connection before actually sending rpc request to the service.
Please remember that all rpc API is provided as an async function.
```js
const {RPCAgent} = require("cactus-agent");
const {create_data_store} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({
service: "data_layer", // connect to local farmer service using config file.
});
// Then call RPC function
const response = await create_data_store(agent, {...});
// Once agent is instantiated, you can re-use it everytime you want to request farmer API.
/*
* You can instantiate `agent` with hostname/port.
* See https://github.com/Cactus-Network/cactus-agent/blob/main/src/rpc/index.ts
*/
const agent = new RPCAgent({
protocol: "https",
host: "aaa.bbb.ccc",
port: 11559,
ca_cert: fs.readFileSync(...),
client_cert: fs.readFileSync(...),
client_key: fs.readFileSync(...),
});
```
## `create_data_store(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {create_data_store} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await create_data_store(agent, params);
```
### params:
```typescript
{
fee?: uint64;
}
```
### response:
```typescript
{
txs: TransactionRecord[];
id: str;
}
```
For content of `TransactionRecord`,
see https://github.com/Cactus-Network/cactus-agent/blob/main/src/api/cactus/wallet/transaction_record.ts
## `get_owned_stores(agent)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_owned_stores} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_owned_stores(agent);
```
### response:
```typescript
{
store_ids: str[];
}
```
## `batch_update(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {batch_update} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await batch_update(agent, params);
```
### params:
```typescript
{
fee?: uint64;
changelist: Array<{
key: str;
reference_node_hash?: str;
side?: 0|1;
value?: str;
}>;
id: str;
}
```
### response:
```typescript
{
tx_id: bytes32;
}
```
## `get_value(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_value} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_value(agent, params);
```
### params:
```typescript
{
id: str;
key: str;
root_hash?: str;
}
```
### response:
```typescript
{
value: str|None;
}
```
## `get_keys(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_keys} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_keys(agent, params);
```
### params:
```typescript
{
id: str;
root_hash?: str;
}
```
### response:
```typescript
{
keys: str[];
}
```
## `get_keys_values(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_keys_values} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_keys_values(agent, params);
```
### params:
```typescript
{
id: str;
root_hash?: str;
}
```
### response:
```typescript
{
keys_values: Array<{
hash: str;
key: str;
value: str;
}>;
}
```
## `get_ancestors(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_ancestors} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_ancestors(agent, params);
```
### params:
```typescript
{
id: str;
hash: str;
}
```
### response:
```typescript
{
ancestors: Array<{
hash: str;
left_hash: str;
right_hash: str;
}>;
}
```
## `get_root(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_root} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_root(agent, params);
```
### params:
```typescript
{
id: str;
}
```
### response:
```typescript
{
hash: bytes32;
confirmed: bool;
timestamp: uint64;
}
```
## `get_local_root(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_local_root} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_local_root(agent, params);
```
### params:
```typescript
{
id: str;
}
```
### response:
```typescript
{
hash: bytes32|None;
}
```
## `get_roots(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_roots} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_roots(agent, params);
```
### params:
```typescript
{
ids: str[];
}
```
### response:
```typescript
{
root_hashes: Array<{
id: bytes32;
hash: bytes32;
confirmed: bool;
timestamp: uint64;
}>;
}
```
## `delete_key(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {delete_key} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await delete_key(agent, params);
```
### params:
```typescript
{
fee?: uint64;
key: str;
id: str;
}
```
### response:
```typescript
{
tx_id: bytes32;
}
```
## `insert(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {insert} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await insert(agent, params);
```
### params:
```typescript
{
fee?: uint64;
key: str;
value: str;
id: str;
}
```
### response:
```typescript
{
tx_id: bytes32;
}
```
## `subscribe(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {subscribe} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await subscribe(agent, params);
```
### params:
```typescript
{
id: str;
urls: str[];
}
```
### response:
```typescript
{
}
```
## `unsubscribe(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {unsubscribe} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await unsubscribe(agent, params);
```
### params:
```typescript
{
id: str;
}
```
### response:
```typescript
{
}
```
## `add_mirror(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {add_mirror} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await add_mirror(agent, params);
```
### params:
```typescript
{
id: str;
urls: str[];
amount: uint64;
fee?: uint64;
}
```
### response:
```typescript
{
}
```
## `delete_mirror(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {delete_mirror} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await delete_mirror(agent, params);
```
### params:
```typescript
{
coin_id: str;
fee?: uint64;
}
```
### response:
```typescript
{
}
```
## `get_mirrors(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_mirrors} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_mirrors(agent, params);
```
### params:
```typescript
{
id: str;
}
```
### response:
```typescript
{
mirrors: Array<{
coin_id: str;
launcher_id: str;
amount: uint64;
urls: str[];
ours: bool;
}>;
}
```
## `remove_subscriptions(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {remove_subscriptions} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await remove_subscriptions(agent, params);
```
### params:
```typescript
{
id: str;
urls: str[];
}
```
### response:
```typescript
{
}
```
## `subscriptions(agent)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {subscriptions} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await subscriptions(agent);
```
### response:
```typescript
{
store_ids: str[];
}
```
## `get_kv_diff(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_kv_diff} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_kv_diff(agent, params);
```
### params:
```typescript
{
id: str;
hash_1: str;
hash_2: str;
}
```
### response:
```typescript
{
diff: Array<{
type: str;
key: str;
value: str;
}>;
}
```
## `get_root_history(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_root_history} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_root_history(agent, params);
```
### params:
```typescript
{
id: str;
}
```
### response:
```typescript
{
root_history: Array<{
root_hash: bytes32;
confirmed: bool;
timestamp: uint64;
}>;
}
```
## `add_missing_files(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {add_missing_files} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await add_missing_files(agent, params);
```
### params:
```typescript
{
ids?: str[];
overwrite?: bool;
foldername?: str;
}
```
### response:
```typescript
{
}
```
## `make_offer(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {make_offer} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await make_offer(agent, params);
```
### params:
```typescript
{
fee?: uint64;
maker: OfferStoreMarshalled;
taker: OfferStoreMarshalled;
}
```
### response:
```typescript
{
success: bool;
offer: OfferMarshalled;
}
```
For content of `OfferStoreMarshalled` and `OfferMarshalled`,
see https://github.com/Cactus-Network/cactus-agent/blob/main/src/api/cactus/data_layer/data_layer.util.ts
## `take_offer(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {take_offer} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await take_offer(agent, params);
```
### params:
```typescript
{
fee?: uint64;
offer: OfferMarshalled;
}
```
### response:
```typescript
{
success: bool;
trade_id: str;
}
```
For content of `OfferMarshalled`,
see https://github.com/Cactus-Network/cactus-agent/blob/main/src/api/cactus/data_layer/data_layer.util.ts
## `verify_offer(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {verify_offer} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await verify_offer(agent, params);
```
### params:
```typescript
{
fee?: uint64;
offer: OfferMarshalled;
}
```
### response:
```typescript
{
success: bool;
valid: bool;
error: Optional<str>;
fee: Optional<uint64>;
}
```
## `cancel_offer(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {cancel_offer} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await cancel_offer(agent, params);
```
### params:
```typescript
{
trade_id: str;
secure: bool;
fee?: uint64;
}
```
### response:
```typescript
{
success: bool;
}
```
## `get_sync_status(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {get_sync_status} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await get_sync_status(agent, params);
```
### params:
```typescript
{
id: str;
}
```
### response:
```typescript
{
sync_status: SyncStatus;
}
```
For content of `SyncStatus`,
see https://github.com/Cactus-Network/cactus-agent/blob/main/src/api/cactus/data_layer/data_layer.util.ts
## `check_plugins(agent)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {check_plugins} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await check_plugins(agent, params);
```
### response:
```typescript
PluginStatusMarshalled
```
For content of `PluginStatusMarshalled`,
see https://github.com/Cactus-Network/cactus-agent/blob/main/src/api/cactus/data_layer/data_layer.util.ts
## `clear_pending_roots(agent, params)`
### Usage
```js
const {RPCAgent} = require("cactus-agent");
const {clear_pending_roots} = require("cactus-agent/api/rpc/data_layer");
const agent = new RPCAgent({service: "data_layer"});
const response = await clear_pending_roots(agent, params);
```
### params:
```typescript
{
store_id: str;
}
```
### response:
```typescript
{
success: bool;
root: Optional<RootMarshalled>;
}
```
For content of `RootMarshalled`,
see https://github.com/Cactus-Network/cactus-agent/blob/main/src/api/cactus/data_layer/data_layer.util.ts