Operation CategoriesCreate a tagging category

Create a tagging category

An admin creates a tagging type (category) with typed fields. The category and field keys are stable slugs (immutable). Access and approvers are configured through separate endpoints.

curl -X POST "https://policy-engine-rest.ezig.workers.dev/api/v1/vaults/demo_vault/operation-categories" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
  "key": "virt_asset_sale",
  "name": "John Doe",
  "description": "example_string",
  "emoji": "example_string",
  "color": "example_string",
  "appliesTo": "transfer",
  "viewScope": "owner_only",
  "assignScope": "owner_only",
  "editScope": "owner_only",
  "approvalScope": "none",
  "approvalThreshold": 42,
  "allowInitiatorApproval": true,
  "fields": [
    {
      "key": "sale_rate",
      "label": "example_string",
      "type": "text",
      "required": true,
      "optionsJson": [
        {
          "value": "example_string",
          "label": "example_string"
        }
      ],
      "scale": 42,
      "currencyFieldKey": "ticker",
      "unit": "example_string",
      "defaultJson": "null",
      "helpText": "example_string",
      "sensitive": true,
      "orderIndex": 42
    }
  ]
}'
{
  "id": "cmr3f41z20001psp7phmyapw3",
  "vaultId": "example_string",
  "key": "example_string",
  "name": "John Doe",
  "description": "example_string",
  "emoji": "example_string",
  "color": "example_string",
  "appliesTo": "transfer",
  "viewScope": "owner_only",
  "assignScope": "owner_only",
  "editScope": "owner_only",
  "approvalScope": "none",
  "approvalThreshold": 42,
  "allowInitiatorApproval": true,
  "isSystem": true,
  "archived": true,
  "version": 42,
  "createdById": "example_string",
  "updatedById": "example_string",
  "createdAt": "2026-07-02T11:25:15.134000Z",
  "updatedAt": "2026-07-02T11:25:15.134000Z",
  "fields": [
    {
      "id": "cmr3f41z20001psp7phmyapw3",
      "categoryId": "example_string",
      "key": "example_string",
      "label": "example_string",
      "type": "text",
      "required": true,
      "optionsJson": [
        {
          "value": "example_string",
          "label": "example_string"
        }
      ],
      "scale": 42,
      "currencyFieldKey": "example_string",
      "unit": "example_string",
      "defaultJson": "null",
      "helpText": "example_string",
      "sensitive": true,
      "orderIndex": 42,
      "archived": true,
      "createdAt": "2026-07-02T11:25:15.134000Z",
      "updatedAt": "2026-07-02T11:25:15.134000Z"
    }
  ],
  "grants": [
    {
      "id": "cmr3f41z20001psp7phmyapw3",
      "vaultId": "example_string",
      "categoryId": "example_string",
      "subjectType": "user",
      "subjectUserId": "example_string",
      "subjectGroupId": "example_string",
      "canView": true,
      "canAssign": true,
      "canEdit": true,
      "grantorId": "example_string",
      "status": "example_string",
      "createdAt": "2026-07-02T11:25:15.134000Z"
    }
  ],
  "approvers": [
    {
      "id": "cmr3f41z20001psp7phmyapw3",
      "categoryId": "example_string",
      "kind": "user",
      "userId": "example_string",
      "groupId": "example_string",
      "createdAt": "2026-07-02T11:25:15.134000Z"
    }
  ]
}
POST
/api/v1/vaults/{code}/operation-categories
POST
Base URLstring

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

Bearer Token
Bearer Tokenstring
Required

Session token. Mobile/services. The web uses a cookie.

Session token. Mobile/services. The web uses a cookie.
API Key (cookie: session_token)
session_tokenstring
Required

API key (sent in cookie)

path
codestring
Required

Unique Vault code (slug)

Content-Typestring
Required

The media type of the request body

Options: application/json
keystring
Required

Stable category slug (immutable)

Min length: 1 • Max length: 64 • Pattern: ^[a-z][a-z0-9_]*$
namestring
Required
Min length: 1 • Max length: 200
descriptionstring
Max length: 1000
emojistring
Min length: 1 • Max length: 16
colorstring
Pattern: ^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$
appliesTostring
Options: transfer, deposit, both
viewScopestring
Options: owner_only, vault_members, restricted
assignScopestring
Options: owner_only, vault_members, restricted
editScopestring
Options: owner_only, vault_members, restricted
approvalScopestring
Options: none, edit, assign_and_edit
Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token. Session token. Mobile/services. The web uses a cookie.

path
parameterstring
Required

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

Path Parameters

codestring
Required

Unique Vault code (slug)

Example:
demo_vault

Body

application/json
keystring
Required

Stable category slug (immutable)

Example:
virt_asset_sale
appliesTostring
Allowed values:transferdepositboth
viewScopestring
Allowed values:owner_onlyvault_membersrestricted
assignScopestring
Allowed values:owner_onlyvault_membersrestricted
editScopestring
Allowed values:owner_onlyvault_membersrestricted
approvalScopestring
Allowed values:noneeditassign_and_edit
fieldsarray

Responses