VaultsСоздать Vault

Создать Vault

Создаёт Vault с полной derivation-структурой одним запросом. RouteMap обязан содержать спец-ключ "network" (его варианты upsert'ятся в глобальный реестр Network по coinType). Остальные сегменты становятся Route'ами: order нормализуется от 0 в порядке исходных значений. Vault создаётся в статусе draft (lockedAt = null). D1 не поддерживает транзакции — при частичном сбое выполняется best-effort cleanup.

curl -X POST "https://policy-engine-rest.ezig.workers.dev/api/v1/vaults" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
  "vault": {
    "code": "acme-otc",
    "name": "ACME OTC",
    "description": "example_string",
    "walletServiceUrl": "https://wallet.example.com"
  },
  "routes": {
    "network": {
      "order": 0,
      "name": "Network",
      "dynamic": false,
      "variants": [
        {
          "id": 195,
          "code": "tron_network",
          "name": "Tron"
        }
      ]
    },
    "index": {
      "order": 1,
      "name": "Index",
      "dynamic": true
    },
    "asset": {
      "order": 2,
      "name": "Asset",
      "dynamic": false,
      "variants": [
        {
          "id": 0,
          "code": "a7a5",
          "name": "A7A5"
        },
        {
          "id": 1,
          "code": "usdt",
          "name": "USDT"
        }
      ]
    }
  }
}'
{
  "id": "cmr3f41z20001psp7phmyapw3",
  "code": "test_vault",
  "name": "Test Vault",
  "description": "example_string",
  "lockedAt": "2026-07-02T11:25:15.134Z",
  "walletServiceUrl": "example_string",
  "createdAt": "2026-07-02T11:25:15.134Z",
  "updatedAt": "2026-07-02T11:25:15.134Z",
  "networks": [
    {
      "id": "cmr3f41z20001psp7phmyapw3",
      "coinType": 195,
      "code": "tron_network",
      "slug": "tron",
      "name": "Tron",
      "description": "example_string",
      "logoUri": "https://cdn.example.com/networks/tron.png",
      "type": "TRON",
      "createdAt": "2026-07-02T11:25:15.134Z",
      "updatedAt": "2026-07-02T11:25:15.134Z"
    }
  ],
  "routes": [
    {
      "id": "cmr3f41z20001psp7phmyapw3",
      "vaultId": "example_string",
      "order": 0,
      "code": "purpose",
      "name": "John Doe",
      "description": "example_string",
      "dynamic": true,
      "createdAt": "2026-07-02T11:25:15.134Z",
      "updatedAt": "2026-07-02T11:25:15.134Z",
      "variants": [
        {
          "id": "cmr3f41z20001psp7phmyapw3",
          "routeId": "example_string",
          "pathId": 1,
          "code": "usdt",
          "name": "John Doe",
          "description": "example_string",
          "enabled": true,
          "tokenId": "example_string",
          "createdAt": "2026-07-02T11:25:15.134Z",
          "updatedAt": "2026-07-02T11:25:15.134Z"
        }
      ]
    }
  ]
}
POST
/api/v1/vaults
POST
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token
Bearer Tokenstring
Required

better-auth session token. Мобилка/сервисы. Веб использует cookie.

better-auth session token. Мобилка/сервисы. Веб использует cookie.
API Key (cookie: better-auth.session_token)
Content-Typestring
Required

The media type of the request body

Options: application/json
routesobject
Required

RouteMap: ключ — code сегмента. Обязателен спец-ключ "network" (static, его варианты идут в глобальный реестр Network, id = SLIP-0044 coinType). Остальные сегменты станут Route'ами Vault'а, order нормализуется от 0.

Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. better-auth session token. Мобилка/сервисы. Веб использует cookie.

path
parameterstring
Required

API Key for authentication. Provide your API key in the cookie.

Body

application/json
vaultobject
Required
routesobject
Required

RouteMap: ключ — code сегмента. Обязателен спец-ключ "network" (static, его варианты идут в глобальный реестр Network, id = SLIP-0044 coinType). Остальные сегменты станут Route'ами Vault'а, order нормализуется от 0.

Example:
{"network":{"order":0,"name":"Network","dynamic":false,"variants":[{"id":195,"code":"tron_network","name":"Tron"}]},"index":{"order":1,"name":"Index","dynamic":true},"asset":{"order":2,"name":"Asset","dynamic":false,"variants":[{"id":0,"code":"a7a5","name":"A7A5"},{"id":1,"code":"usdt","name":"USDT"}]}}

Responses