Veefore docs

Tenancy API

Organizations, workspaces, environments and the enforcement mode of each.

Generated page. Built from the API catalogue in apps/control-plane/src/routes/developer.ts. Edit the source, not this page.

Every other resource in Veefore is reachable only through this hierarchy. The enforcement mode lives on the environment, which is why promoting to ENFORCE is a tenancy operation and not a policy one.

Step-up required

1 endpoint in this group require a fresh step-up authentication within the last few minutes, even for a session that already holds the permission. They are marked below.

#Endpoints

Endpoint Permission Notes
GET /v1/organization organization:read —
PATCH /v1/organization organization:update —
GET /v1/fx-rates organization:read —
GET /v1/fx-rates/history organization:read —
POST /v1/fx-rates organization:update —
DELETE /v1/fx-rates/{rateId} organization:update —
POST /v1/fx-rates/refresh organization:update —
GET /v1/workspaces workspace:read —
POST /v1/workspaces workspace:create accepts Idempotency-Key
GET /v1/environments environment:read —
POST /v1/environments environment:create accepts Idempotency-Key
POST /v1/environments/{environmentId}/gateway-mode environment:set_mode —
POST /v1/environments/{environmentId}/pause environment:pause step-up, high impact

#What each endpoint does

#GET /v1/organization

Read the active organization.

Requires organization:read.

#PATCH /v1/organization

Update organization settings, including base_currency (ISO 4217). Changing the base currency is audited; existing limits keep their own currency and are converted.

Requires organization:update.

Request body:

json
{
  "name": "string?",
  "require_mfa": "boolean?",
  "base_currency": "string? (ISO 4217)"
}

#GET /v1/fx-rates

Exchange rates in force (manual overrides automatic for the same pair) and automatic-provider status.

Requires organization:read.

#GET /v1/fx-rates/history

Every stored exchange rate, newest first.

Requires organization:read.

#POST /v1/fx-rates

Add a manual exchange rate: rate units of quote per 1 base. Overrides automatic rates.

Requires organization:update.

Request body:

json
{
  "base_currency": "string (ISO 4217)",
  "quote_currency": "string (ISO 4217)",
  "rate": "string (decimal, e.g. \"83.25\")",
  "effective_at": "string? (ISO-8601)"
}

#DELETE /v1/fx-rates/{rateId}

Delete a manual exchange rate.

Requires organization:update.

#POST /v1/fx-rates/refresh

Fetch automatic exchange rates now. Requires VEEFORE_FX_PROVIDER_URL; only the rate request is sent.

Requires organization:update.

#GET /v1/workspaces

List workspaces.

Requires workspace:read.

#POST /v1/workspaces

Create a workspace.

Requires workspace:create.

Request body:

json
{
  "name": "string",
  "slug": "string?"
}

#GET /v1/environments

List environments.

Requires environment:read.

#POST /v1/environments

Create an environment.

Requires environment:create.

Request body:

json
{
  "workspace_id": "string",
  "name": "string",
  "type": "DEVELOPMENT|STAGING|PRODUCTION"
}

#POST /v1/environments/{environmentId}/gateway-mode

Change enforcement mode. Reducing enforcement needs step-up and a reason.

Requires environment:set_mode.

Request body:

json
{
  "mode": "OBSERVE|SIMULATE|ENFORCE",
  "reason": "string?"
}

#POST /v1/environments/{environmentId}/pause

Emergency: pause all protected execution in an environment.

Requires environment:pause. Step-up authentication is also required.

Request body:

json
{
  "reason": "string"
}

Identity, authority, policy and enforcement for autonomous AI agents.