Shared objects
Object shapes referenced by name across several endpoints, shown exactly as they appear on the wire.
Endpoint pages reference these shapes by name. nullable(T) is the wrapper
described under payload conventions: { "String": "…", "Valid": true },
and likewise for Time and Int64, where "Valid": false means no value is
present.
#User
The caller's account and memberships. Returned by sign-in and by
GET /api/v1/get-user-info.
{
"UUID": 4021,
"Email": "operator@example.com",
"FirstName": { "String": "Ada", "Valid": true },
"Surname": { "String": "Okafor", "Valid": true },
"LastLogin": { "Time": "2026-08-03T09:14:22Z", "Valid": true },
"PhoneNumber": { "String": "+441632960431", "Valid": true },
"DefaultOrg": 118,
"DefaultWorkspace": 342,
"OrganisationsInfo": {
"Organisations": [
{
"OrgID": 118,
"OrgName": "Northgate Treasury",
"Workspaces": {
"Workspaces": [
{
"WorkspaceInfo": {
"uid": 342,
"name": "Treasury Operations",
"description": "Live issuance and settlement",
"net": "mainnet"
},
"Role": {
"RoleId": 77,
"Name": "Approver",
"Description": "Reviews and signs pending movements",
"Perm": [
{ "UID": 6, "RuleName": "PAYMENT_APPROVE" },
{ "UID": 8, "RuleName": "VIEW_BALANCES" }
]
}
}
]
}
}
]
}
}#Key
A registered signing key. Public data only.
{
"ID": "key_01HZX4M8QT",
"UserID": "4021",
"KeyType": "hd_xpub",
"Status": "active",
"PubKeyHex": { "String": "02c6047f9441ed7d…", "Valid": true },
"Xpub": { "String": "zpub6rFR7y4Q2AijBEqTUquhVz…", "Valid": true },
"MasterFingerprint": { "String": "7f3a1c4d", "Valid": true },
"DerivationBasePath": { "String": "m/84'/0'/0'", "Valid": true },
"Label": { "String": "Treasury signing key", "Valid": true },
"Net": "mainnet",
"CreatedAt": "2026-06-11T14:02:51Z",
"UpdatedAt": "2026-06-11T14:02:51Z"
}Status is active or revoked. A member holds one active key per network.
#Vault
A multi-signature vault with its limits and signer set.
{
"id": "vault_01HZXB2K7P",
"user_id": "4021",
"workspace_id": "342",
"name": "Issuance vault",
"network": "mainnet",
"m": 2,
"n": 3,
"script_type": "p2wsh",
"witness_script_hex": "5221024f8e…53ae",
"address": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq",
"created_at": "2026-06-14T10:22:03Z",
"updated_at": "2026-07-28T16:41:19Z",
"detailed_vault_limits": {
"Limit": "250000.00",
"CyclePeriod": "M",
"CycleDay": 1,
"Used": "18400.50",
"Unused": "231599.50",
"NextReset": "2026-09-01T00:00:00Z"
},
"signers": [
{ "key_index": 0, "first_name": { "String": "Ada", "Valid": true }, "surname": { "String": "Okafor", "Valid": true } },
{ "key_index": 1, "first_name": { "String": "Ben", "Valid": true }, "surname": { "String": "Iversen", "Valid": true } },
{ "key_index": 2, "first_name": { "String": "Chi", "Valid": true }, "surname": { "String": "Nakamura", "Valid": true } }
]
}A limit_error string appears instead of detailed_vault_limits when the
policy service could not be reached.
#Contract
A token record. status follows the deployment lifecycle documented in the
status reference.
{
"contract_uid": 512,
"vault_id": "vault_01HZXB2K7P",
"contract_id": "9f2c8b1d4a…41a",
"symbol": "NGT",
"icon": "https://cdn.example.com/tokens/ngt.svg",
"decimals": 2,
"total_supply": "500000000",
"max_supply": "1000000000",
"status": "CONFIRMED",
"bytecode_hash": "b7f1e2c9…9ac",
"network": "mainnet",
"deploy_psbt_id": "psbt_01HZXC9F4R",
"whitelist_enabled": true,
"signers": [
{ "key_id": "key_01HZX4M8QT", "is_signed": true, "user_id": "4021" },
{ "key_id": "key_01HZX52NRB", "is_signed": true, "user_id": "4088" }
]
}status is one of PENDING, BROADCASTING, CONFIRMED, or FAILED.
contract_id, bytecode_hash, network, and deploy_psbt_id are null until
the deployment is built and broadcast.
#TokenBalance
One token holding in a vault.
{
"contract_uid": 512,
"contract_address": "9f2c8b1d4a…41a",
"name": "Northgate Token",
"balance": "12750000",
"decimals": 2,
"icon": "https://cdn.example.com/tokens/ngt.svg",
"owned": true,
"total_supply": "500000000",
"max_supply": "1000000000"
}owned is true when this vault owns the token contract, which is what allows
it to mint and burn. balance, total_supply, and max_supply are raw units.
#AuditLogEntry
One audit log row.
{
"event_uid": "evt_01HZXG7T2M",
"org_uid": "118",
"workspace_uid": "342",
"timestamp": "2026-08-03T11:47:09Z",
"category": "SIGNING",
"action": "SIGNATURE_SUBMITTED",
"description": "Signature recorded for proposal psbt_01HZXC9F4R (2 of 3)",
"user_uuid": 4088,
"role_uid": "77",
"trace_id": "3f9a1b7c8d2e4f60",
"prev_hash": "Yj8xQ1pLc0dGN2h2…",
"event_hash": "T3JvYml0U1FSTGF1…",
"user_name": "Ben Iversen"
}prev_hash and event_hash are base64. They chain entries together so that a
removed or altered row is detectable.
#MoonPayTransaction
One Bitcoin purchase, as reported by MoonPay.
{
"id": "d1f4c8a2-6b3e-4c17-9f52-0a7b8e6d4c31",
"status": "completed",
"created_at": "2026-08-01T08:12:44Z",
"updated_at": "2026-08-01T08:31:02Z",
"base_currency_amount": 5000,
"base_currency_code": "gbp",
"quote_currency_amount": 0.0812,
"quote_currency_code": "btc",
"fee_amount": 74.5,
"extra_fee_amount": 0,
"network_fee_amount": 3.2,
"are_fees_included": true,
"wallet_address": "bc1qm34lsc65zpw79lxes69zkqmk6ee3ewf0j77s3h",
"crypto_transaction_id": "4a7d2e9f1b…c83",
"failure_reason": null,
"external_transaction_id": "4021"
}status is one of waitingPayment, pending, waitingAuthorization,
completed, or failed. crypto_transaction_id is the Bitcoin transaction id,
set once the coins are sent.
#OnboardingRequest
A stored organisation request.
{
"uid": 91,
"requester_uuid": 4021,
"requester_email": "operator@example.com",
"first_name": "Ada",
"last_name": "Okafor",
"work_email": "ada.okafor@northgate.example",
"messaging_platform": "telegram",
"messaging_handle": "@ada_okafor",
"monthly_volume": "1m_to_10m",
"referral_source": "conference",
"referral_source_detail": { "String": "", "Valid": false },
"org_name": "Northgate Treasury",
"workspace_name": "Treasury Operations",
"status": "pending",
"review_note": { "String": "", "Valid": false },
"approved_by_email": { "String": "", "Valid": false },
"approved_at": { "Time": "0001-01-01T00:00:00Z", "Valid": false },
"was_created": false,
"created_org_uid": { "Int64": 0, "Valid": false },
"submitted_at": "2026-07-30T13:05:27Z",
"updated_at": "2026-07-30T13:05:27Z"
}