Upsert Node Platform Owner Fee
Creates or replaces what the platform owner charges one node (entity 2): across every network, or on one network when the body carries network_id. Only the platform owner node's own API key may call this; every other key gets 403.
The row is saved and returned at once. Pushing it on-chain is asynchronous: every deployed setup of the node (on that network, when network_id is set) whose effective platform-owner fee changes gets node transactions (types 12, 13) opened on the platform owner's node. Call Get Affected Setups Count first to see how many setups that is, and poll Get Node Transactions for the result. See Fees Overview.
Required permission: fee:upsert
Request
PUT /v2/admin/fees/nodes/{node_id}/platform-owner
Parameters
| Name | Type | In | Description |
|---|---|---|---|
node_id | string | path | Required. Node the platform owner charges |
Headers
| Name | Description |
|---|---|
Authorization | Required. Bearer <access_token> |
Content-Type | Required. application/json |
Body
| Field | Type | Required | Description |
|---|---|---|---|
network_id | string or null | No | Network to scope the row to. Omit or send null for the row that applies on every network. The network must exist |
value | object | Yes | The nine rates. All nine leaves are required: tokenization.asset_tokenization, tokenization.tokenized_asset_sales, tokenization.management, secondary_market.buy_order, secondary_market.sell_order, secondary_market.otc_sale, lending.borrower, lending.lending, lending.liquidation |
value.<group>.<leaf>.value | string | Yes | Rate in percent, "0" to "100", at most one decimal (for example "2.5"). See Amounts and Percentages |
categories | array or null | No | Per-asset-category overrides. An override on a parent category is applied to its leaf categories |
categories[].id | string | Yes | Category ID (24-character hex) |
categories[].value | object | Yes | Rates for this category, same shape as value |
Example
curl --request PUT \
--url '{{baseUrl}}/v2/admin/fees/nodes/6a4bef2b1e781b11c22e9707/platform-owner' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{
"network_id": null,
"value": {
"tokenization": {
"asset_tokenization": { "value": "2" },
"tokenized_asset_sales": { "value": "2" },
"management": { "value": "2" }
},
"secondary_market": {
"buy_order": { "value": "2" },
"sell_order": { "value": "2" },
"otc_sale": { "value": "2" }
},
"lending": {
"borrower": { "value": "2" },
"lending": { "value": "2" },
"liquidation": { "value": "2" }
}
},
"categories": null
}'
Response
{
"id": "6a553a0e9c6088e126a4bea3",
"entity": 2,
"node_id": "6a4bef2b1e781b11c22e9707",
"value": {
"tokenization": {
"asset_tokenization": { "id": 0, "value": "2" },
"tokenized_asset_sales": { "id": 0, "value": "2" },
"management": { "id": 0, "value": "2" }
},
"secondary_market": {
"buy_order": { "id": 0, "value": "2" },
"sell_order": { "id": 0, "value": "2" },
"otc_sale": { "id": 0, "value": "2" }
},
"lending": {
"borrower": { "id": 0, "value": "2" },
"lending": { "id": 0, "value": "2" },
"liquidation": { "id": 0, "value": "2" }
}
},
"categories": null
}
Response Fields
The saved fee row, in the same shape as Get Fee by ID.
| Field | Type | Description |
|---|---|---|
id | string | Fee row ID |
entity | integer | 2 (platform owner) |
node_id | string | The node from the path |
network_id | string | The network from the body. Omitted for the row that applies on every network |
value | object | The saved rates. Each leaf is { "id": 0, "value": "<percent>" } |
categories | array or null | The saved per-category overrides, expanded to leaf categories (id, int_id, path, value) |
Errors
| Status | Code | Description |
|---|---|---|
| 400 | 10015 | Validation failed — see details. Also returned when network_id names no network, and for a malformed rate |
| 400 | 10016 | node_id or network_id is not a 24-character hex ID |
| 400 | 10001 (domain 2) | Node not found |
| 400 | 10002 (domain 9) | value does not contain all nine rates |
| 400 | 10001 (domain 4) | A categories[].id does not exist |
| 403 | 10003 (domain 9) | The key is not the platform owner node's |
| 500 | 10000 | Unexpected server error |
See Errors for the error format and common codes.