Skip to main content

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​

NameTypeInDescription
node_idstringpathRequired. Node the platform owner charges

Headers​

NameDescription
AuthorizationRequired. Bearer <access_token>
Content-TypeRequired. application/json

Body​

FieldTypeRequiredDescription
network_idstring or nullNoNetwork to scope the row to. Omit or send null for the row that applies on every network. The network must exist
valueobjectYesThe 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>.valuestringYesRate in percent, "0" to "100", at most one decimal (for example "2.5"). See Amounts and Percentages
categoriesarray or nullNoPer-asset-category overrides. An override on a parent category is applied to its leaf categories
categories[].idstringYesCategory ID (24-character hex)
categories[].valueobjectYesRates 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.

FieldTypeDescription
idstringFee row ID
entityinteger2 (platform owner)
node_idstringThe node from the path
network_idstringThe network from the body. Omitted for the row that applies on every network
valueobjectThe saved rates. Each leaf is { "id": 0, "value": "<percent>" }
categoriesarray or nullThe saved per-category overrides, expanded to leaf categories (id, int_id, path, value)

Errors​

StatusCodeDescription
40010015Validation failed — see details. Also returned when network_id names no network, and for a malformed rate
40010016node_id or network_id is not a 24-character hex ID
40010001 (domain 2)Node not found
40010002 (domain 9)value does not contain all nine rates
40010001 (domain 4)A categories[].id does not exist
40310003 (domain 9)The key is not the platform owner node's
50010000Unexpected server error

See Errors for the error format and common codes.