From abf899c395b538fb5cfe4005f8c917e16b7a93fe Mon Sep 17 00:00:00 2001 From: geobelsky Date: Sat, 21 Mar 2026 09:39:18 +0000 Subject: [PATCH 1/2] docs: add cross-org receive policy API reference Co-Authored-By: Claude Opus 4.6 (1M context) --- docs/cross-org-receive-policy.md | 198 +++++++++++++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 docs/cross-org-receive-policy.md diff --git a/docs/cross-org-receive-policy.md b/docs/cross-org-receive-policy.md new file mode 100644 index 0000000..b8c66b7 --- /dev/null +++ b/docs/cross-org-receive-policy.md @@ -0,0 +1,198 @@ +# Cross-Org Receive Policy + +Control which external organizations can send intents to your org and agents. + +## Overview + +Cross-org intent delivery is governed by a three-level access control chain: + +1. **Org receive policy** — org-wide default for inbound cross-org intents +2. **Agent receive override** — per-agent exception to the org default +3. **Agent send policy** — per-agent control on who can send (existing, orthogonal) + +Intra-org sends (same `org_id`) always bypass the receive policy — no enforcement. + +## Org Receive Policy + +Each organization has a receive policy that controls whether external senders can deliver intents to any agent in the org. + +| Mode | Behavior | +|---|---| +| `closed` | Reject all cross-org inbound intents (default) | +| `allowlist` | Accept only from senders matching allowlist patterns | +| `open` | Accept cross-org intents from any sender | + +Default is `closed` — no cross-org traffic is accepted until explicitly configured. + +### API + +#### Get org receive policy + +``` +GET /v1/organizations/{org_id}/receive-policy +``` + +**Response:** +```json +{ + "ok": true, + "policy": { + "policy_id": "orp_...", + "org_id": "org_...", + "policy_type": "closed", + "entries": [], + "created_at": "2026-03-21T...", + "updated_at": "2026-03-21T..." + } +} +``` + +#### Set org receive policy + +``` +PUT /v1/organizations/{org_id}/receive-policy +Content-Type: application/json + +{ "policy_type": "allowlist" } +``` + +Valid values: `open`, `allowlist`, `closed`. + +#### Add allowlist entry + +``` +POST /v1/organizations/{org_id}/receive-policy/entries +Content-Type: application/json + +{ "sender_pattern": "agent://partner-org/prod/*" } +``` + +Patterns support exact match or trailing wildcard: +- `agent://acme-corp/prod/billing-bot` — exact agent +- `agent://acme-corp/prod/*` — all agents in workspace +- `agent://acme-corp/*` — all agents in top-level org scope + +#### Remove allowlist entry + +``` +DELETE /v1/organizations/{org_id}/receive-policy/entries/{entry_id} +``` + +### CLI + +```bash +axme org receive-policy get +axme org receive-policy set +axme org receive-policy add +axme org receive-policy remove +``` + +## Agent Receive Override + +Individual agents can override the org-level receive policy. This enables "public agents" — agents that accept cross-org intents even when the org is closed. + +| Override | Behavior | +|---|---| +| `use_org_default` | Follow the org receive policy (default) | +| `open` | Accept cross-org intents regardless of org policy | +| `allowlist` | Accept only from agent-level allowlist entries | +| `closed` | Reject all cross-org intents regardless of org policy | + +### API + +#### Get agent receive override + +``` +GET /v1/agents/{address}/receive-override +``` + +**Response:** +```json +{ + "ok": true, + "override": { + "address": "agent://acme-corp/prod/public-api", + "address_id": "addr_...", + "override_type": "use_org_default", + "entries": [] + } +} +``` + +#### Set agent receive override + +``` +PUT /v1/agents/{address}/receive-override +Content-Type: application/json + +{ "override_type": "open" } +``` + +Valid values: `open`, `allowlist`, `closed`, `use_org_default`. + +Setting `use_org_default` removes the override — the agent falls back to the org policy. + +#### Add override allowlist entry + +``` +POST /v1/agents/{address}/receive-override/entries +Content-Type: application/json + +{ "sender_pattern": "agent://vip-partner/prod/bot" } +``` + +#### Remove override entry + +``` +DELETE /v1/agents/{address}/receive-override/entries/{entry_id} +``` + +### CLI + +```bash +axme agents receive-override get
+axme agents receive-override set
+axme agents receive-override add
+axme agents receive-override remove
+``` + +## Enforcement + +When an intent is submitted via `POST /v1/intents`: + +1. **Intra-org check**: if sender and receiver are in the same org → always allowed, skip receive policy. +2. **Agent override**: if the target agent has an override other than `use_org_default` → apply override policy. +3. **Org policy**: otherwise apply the receiver org's receive policy. +4. **Default**: if no policy row exists → `closed` (reject). + +### Error codes + +| Code | Meaning | +|---|---| +| `receiver_org_closed` | Receiver org does not accept cross-org intents | +| `receiver_agent_closed` | Agent override rejects cross-org intents | +| `sender_not_in_receive_allowlist` | Sender not in org or agent allowlist | + +All return HTTP 403. + +## Access Control + +Receive policy endpoints require `org_owner`, `org_admin`, or `platform_admin` role. `workspace_admin` cannot modify org-level receive policies. + +## Billing + +Cross-org intents count against the **sender's** quota, not the receiver's. + +## Example: Public Agent in Closed Org + +```bash +# Org is closed by default — no cross-org traffic +axme org receive-policy get +# Mode: closed + +# Make one agent publicly accessible +axme agents receive-override set acme-corp/prod/public-api open + +# External orgs can now send to this agent only +# All other agents in the org remain protected +``` From c4ebf61457382ff447e948fb61596d0dbab027e4 Mon Sep 17 00:00:00 2001 From: geobelsky Date: Sat, 21 Mar 2026 09:44:45 +0000 Subject: [PATCH 2/2] docs: sync OpenAPI snapshots with control-plane (receive policy endpoints) Co-Authored-By: Claude Opus 4.6 (1M context) --- docs/openapi/gateway.track-f-sprint1.v1.json | 377 ++++++ docs/openapi/gateway.v1.json | 1134 +++++++++++++++--- 2 files changed, 1377 insertions(+), 134 deletions(-) diff --git a/docs/openapi/gateway.track-f-sprint1.v1.json b/docs/openapi/gateway.track-f-sprint1.v1.json index f771ae3..ae1b277 100644 --- a/docs/openapi/gateway.track-f-sprint1.v1.json +++ b/docs/openapi/gateway.track-f-sprint1.v1.json @@ -2139,6 +2139,325 @@ } } }, + "/v1/organizations/{org_id}/receive-policy": { + "get": { + "summary": "Enterprise Get Org Receive Policy", + "operationId": "enterprise_get_org_receive_policy_v1_organizations__org_id__receive_policy_get", + "parameters": [ + { + "name": "org_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Org Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise Get Org Receive Policy V1 Organizations Org Id Receive Policy Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "put": { + "summary": "Enterprise Set Org Receive Policy", + "operationId": "enterprise_set_org_receive_policy_v1_organizations__org_id__receive_policy_put", + "parameters": [ + { + "name": "org_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Org Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgReceivePolicySetRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise Set Org Receive Policy V1 Organizations Org Id Receive Policy Put" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/organizations/{org_id}/receive-policy/entries": { + "post": { + "summary": "Enterprise Add Org Receive Policy Entry", + "operationId": "enterprise_add_org_receive_policy_entry_v1_organizations__org_id__receive_policy_entries_post", + "parameters": [ + { + "name": "org_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Org Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgReceivePolicyEntryAddRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise Add Org Receive Policy Entry V1 Organizations Org Id Receive Policy Entries Post" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/organizations/{org_id}/receive-policy/entries/{entry_id}": { + "delete": { + "summary": "Enterprise Remove Org Receive Policy Entry", + "operationId": "enterprise_remove_org_receive_policy_entry_v1_organizations__org_id__receive_policy_entries__entry_id__delete", + "parameters": [ + { + "name": "org_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Org Id" + } + }, + { + "name": "entry_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Entry Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise Remove Org Receive Policy Entry V1 Organizations Org Id Receive Policy Entries Entry Id Delete" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, "/v1/quotas": { "patch": { "summary": "Enterprise Upsert Quota", @@ -5408,6 +5727,35 @@ ], "title": "AccessRequestReviewRequest" }, + "AgentReceiveOverrideEntryAddRequest": { + "properties": { + "sender_pattern": { + "type": "string", + "maxLength": 383, + "minLength": 5, + "title": "Sender Pattern" + } + }, + "type": "object", + "required": [ + "sender_pattern" + ], + "title": "AgentReceiveOverrideEntryAddRequest" + }, + "AgentReceiveOverrideSetRequest": { + "properties": { + "override_type": { + "type": "string", + "pattern": "^(open|allowlist|closed|use_org_default)$", + "title": "Override Type" + } + }, + "type": "object", + "required": [ + "override_type" + ], + "title": "AgentReceiveOverrideSetRequest" + }, "AgentSendPolicyEntryAddRequest": { "properties": { "sender_pattern": { @@ -7113,6 +7461,35 @@ "type": "object", "title": "MemberUpdateRequest" }, + "OrgReceivePolicyEntryAddRequest": { + "properties": { + "sender_pattern": { + "type": "string", + "maxLength": 383, + "minLength": 5, + "title": "Sender Pattern" + } + }, + "type": "object", + "required": [ + "sender_pattern" + ], + "title": "OrgReceivePolicyEntryAddRequest" + }, + "OrgReceivePolicySetRequest": { + "properties": { + "policy_type": { + "type": "string", + "pattern": "^(open|allowlist|closed)$", + "title": "Policy Type" + } + }, + "type": "object", + "required": [ + "policy_type" + ], + "title": "OrgReceivePolicySetRequest" + }, "OrganizationCreateRequest": { "properties": { "name": { diff --git a/docs/openapi/gateway.v1.json b/docs/openapi/gateway.v1.json index 62d3d83..7c4dee9 100644 --- a/docs/openapi/gateway.v1.json +++ b/docs/openapi/gateway.v1.json @@ -923,6 +923,101 @@ } } } + }, + "get": { + "summary": "List Intents", + "description": "List intents visible to the caller's workspace (x-api-key scoped).", + "operationId": "list_intents_v1_intents_get", + "parameters": [ + { + "name": "status", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Filter by lifecycle status", + "title": "Status" + }, + "description": "Filter by lifecycle status" + }, + { + "name": "limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "maximum": 200, + "minimum": 1, + "description": "Max results", + "default": 50, + "title": "Limit" + }, + "description": "Max results" + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response List Intents V1 Intents Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } } }, "/v1/scenarios/apply": { @@ -1640,6 +1735,81 @@ } } }, + "/v1/intents/{intent_id}/tokens": { + "get": { + "summary": "List Intent Tokens", + "description": "Return action tokens for a human-task intent.\n\nUsed by E2E tests and programmatic integrations to retrieve the\npage token without relying on email delivery.", + "operationId": "list_intent_tokens_v1_intents__intent_id__tokens_get", + "parameters": [ + { + "name": "intent_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid", + "title": "Intent Id" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response List Intent Tokens V1 Intents Intent Id Tokens Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, "/v1/intents/{intent_id}/events/stream": { "get": { "summary": "Stream Intent Events", @@ -5123,19 +5293,18 @@ } } }, - "/v1/workspaces/{workspace_id}/members/include": { - "post": { - "summary": "Enterprise Workspace Include Member", - "description": "Include an existing org member into a specific workspace without changing their org-level role.", - "operationId": "enterprise_workspace_include_member_v1_workspaces__workspace_id__members_include_post", + "/v1/organizations/{org_id}/receive-policy": { + "get": { + "summary": "Enterprise Get Org Receive Policy", + "operationId": "enterprise_get_org_receive_policy_v1_organizations__org_id__receive_policy_get", "parameters": [ { - "name": "workspace_id", + "name": "org_id", "in": "path", "required": true, "schema": { "type": "string", - "title": "Workspace Id" + "title": "Org Id" } }, { @@ -5171,16 +5340,6 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MemberAddRequest" - } - } - } - }, "responses": { "200": { "description": "Successful Response", @@ -5189,7 +5348,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Workspace Include Member V1 Workspaces Workspace Id Members Include Post" + "title": "Response Enterprise Get Org Receive Policy V1 Organizations Org Id Receive Policy Get" } } } @@ -5205,30 +5364,18 @@ } } } - } - }, - "/v1/workspaces/{workspace_id}/members/{member_id}/exclude": { - "delete": { - "summary": "Enterprise Workspace Exclude Member", - "description": "Exclude a member from a specific workspace without removing them from the organization.", - "operationId": "enterprise_workspace_exclude_member_v1_workspaces__workspace_id__members__member_id__exclude_delete", + }, + "put": { + "summary": "Enterprise Set Org Receive Policy", + "operationId": "enterprise_set_org_receive_policy_v1_organizations__org_id__receive_policy_put", "parameters": [ { - "name": "workspace_id", - "in": "path", - "required": true, - "schema": { - "type": "string", - "title": "Workspace Id" - } - }, - { - "name": "member_id", + "name": "org_id", "in": "path", "required": true, "schema": { "type": "string", - "title": "Member Id" + "title": "Org Id" } }, { @@ -5264,6 +5411,16 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgReceivePolicySetRequest" + } + } + } + }, "responses": { "200": { "description": "Successful Response", @@ -5272,7 +5429,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Workspace Exclude Member V1 Workspaces Workspace Id Members Member Id Exclude Delete" + "title": "Response Enterprise Set Org Receive Policy V1 Organizations Org Id Receive Policy Put" } } } @@ -5290,11 +5447,20 @@ } } }, - "/v1/quotas": { - "patch": { - "summary": "Enterprise Upsert Quota", - "operationId": "enterprise_upsert_quota_v1_quotas_patch", + "/v1/organizations/{org_id}/receive-policy/entries": { + "post": { + "summary": "Enterprise Add Org Receive Policy Entry", + "operationId": "enterprise_add_org_receive_policy_entry_v1_organizations__org_id__receive_policy_entries_post", "parameters": [ + { + "name": "org_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Org Id" + } + }, { "name": "authorization", "in": "header", @@ -5333,7 +5499,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/QuotaPatchRequest" + "$ref": "#/components/schemas/OrgReceivePolicyEntryAddRequest" } } } @@ -5346,7 +5512,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Upsert Quota V1 Quotas Patch" + "title": "Response Enterprise Add Org Receive Policy Entry V1 Organizations Org Id Receive Policy Entries Post" } } } @@ -5362,31 +5528,29 @@ } } } - }, - "get": { - "summary": "Enterprise Get Quota", - "operationId": "enterprise_get_quota_v1_quotas_get", + } + }, + "/v1/organizations/{org_id}/receive-policy/entries/{entry_id}": { + "delete": { + "summary": "Enterprise Remove Org Receive Policy Entry", + "operationId": "enterprise_remove_org_receive_policy_entry_v1_organizations__org_id__receive_policy_entries__entry_id__delete", "parameters": [ { "name": "org_id", - "in": "query", + "in": "path", "required": true, "schema": { "type": "string", - "minLength": 1, - "maxLength": 255, "title": "Org Id" } }, { - "name": "workspace_id", - "in": "query", + "name": "entry_id", + "in": "path", "required": true, "schema": { "type": "string", - "minLength": 1, - "maxLength": 255, - "title": "Workspace Id" + "title": "Entry Id" } }, { @@ -5430,7 +5594,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Get Quota V1 Quotas Get" + "title": "Response Enterprise Remove Org Receive Policy Entry V1 Organizations Org Id Receive Policy Entries Entry Id Delete" } } } @@ -5448,14 +5612,339 @@ } } }, - "/v1/usage/summary": { - "get": { - "summary": "Enterprise Usage Summary", - "operationId": "enterprise_usage_summary_v1_usage_summary_get", + "/v1/workspaces/{workspace_id}/members/include": { + "post": { + "summary": "Enterprise Workspace Include Member", + "description": "Include an existing org member into a specific workspace without changing their org-level role.", + "operationId": "enterprise_workspace_include_member_v1_workspaces__workspace_id__members_include_post", "parameters": [ { - "name": "org_id", - "in": "query", + "name": "workspace_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Workspace Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemberAddRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise Workspace Include Member V1 Workspaces Workspace Id Members Include Post" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/workspaces/{workspace_id}/members/{member_id}/exclude": { + "delete": { + "summary": "Enterprise Workspace Exclude Member", + "description": "Exclude a member from a specific workspace without removing them from the organization.", + "operationId": "enterprise_workspace_exclude_member_v1_workspaces__workspace_id__members__member_id__exclude_delete", + "parameters": [ + { + "name": "workspace_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Workspace Id" + } + }, + { + "name": "member_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Member Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise Workspace Exclude Member V1 Workspaces Workspace Id Members Member Id Exclude Delete" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/quotas": { + "patch": { + "summary": "Enterprise Upsert Quota", + "operationId": "enterprise_upsert_quota_v1_quotas_patch", + "parameters": [ + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QuotaPatchRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise Upsert Quota V1 Quotas Patch" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "get": { + "summary": "Enterprise Get Quota", + "operationId": "enterprise_get_quota_v1_quotas_get", + "parameters": [ + { + "name": "org_id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "title": "Org Id" + } + }, + { + "name": "workspace_id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "title": "Workspace Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise Get Quota V1 Quotas Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/usage/summary": { + "get": { + "summary": "Enterprise Usage Summary", + "operationId": "enterprise_usage_summary_v1_usage_summary_get", + "parameters": [ + { + "name": "org_id", + "in": "query", "required": true, "schema": { "type": "string", @@ -6132,7 +6621,242 @@ } } } - }, + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise Create Service Account V1 Service Accounts Post" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "get": { + "summary": "Enterprise List Service Accounts", + "operationId": "enterprise_list_service_accounts_v1_service_accounts_get", + "parameters": [ + { + "name": "org_id", + "in": "query", + "required": true, + "schema": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "title": "Org Id" + } + }, + { + "name": "workspace_id", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "minLength": 1, + "maxLength": 255 + }, + { + "type": "null" + } + ], + "title": "Workspace Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise List Service Accounts V1 Service Accounts Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/service-accounts/{service_account_id}": { + "get": { + "summary": "Enterprise Get Service Account", + "operationId": "enterprise_get_service_account_v1_service_accounts__service_account_id__get", + "parameters": [ + { + "name": "service_account_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Service Account Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise Get Service Account V1 Service Accounts Service Account Id Get" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + }, + "delete": { + "summary": "Enterprise Delete Service Account", + "operationId": "enterprise_delete_service_account_v1_service_accounts__service_account_id__delete", + "parameters": [ + { + "name": "service_account_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Service Account Id" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], "responses": { "200": { "description": "Successful Response", @@ -6141,7 +6865,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Create Service Account V1 Service Accounts Post" + "title": "Response Enterprise Delete Service Account V1 Service Accounts Service Account Id Delete" } } } @@ -6157,10 +6881,12 @@ } } } - }, + } + }, + "/v1/agents": { "get": { - "summary": "Enterprise List Service Accounts", - "operationId": "enterprise_list_service_accounts_v1_service_accounts_get", + "summary": "Enterprise List Agents", + "operationId": "enterprise_list_agents_v1_agents_get", "parameters": [ { "name": "org_id", @@ -6176,18 +6902,11 @@ { "name": "workspace_id", "in": "query", - "required": false, + "required": true, "schema": { - "anyOf": [ - { - "type": "string", - "minLength": 1, - "maxLength": 255 - }, - { - "type": "null" - } - ], + "type": "string", + "minLength": 1, + "maxLength": 255, "title": "Workspace Id" } }, @@ -6232,7 +6951,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise List Service Accounts V1 Service Accounts Get" + "title": "Response Enterprise List Agents V1 Agents Get" } } } @@ -6250,18 +6969,18 @@ } } }, - "/v1/service-accounts/{service_account_id}": { + "/v1/agents/{address}/policy": { "get": { - "summary": "Enterprise Get Service Account", - "operationId": "enterprise_get_service_account_v1_service_accounts__service_account_id__get", + "summary": "Enterprise Get Agent Policy", + "operationId": "enterprise_get_agent_policy_v1_agents__address__policy_get", "parameters": [ { - "name": "service_account_id", + "name": "address", "in": "path", "required": true, "schema": { "type": "string", - "title": "Service Account Id" + "title": "Address" } }, { @@ -6305,7 +7024,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Get Service Account V1 Service Accounts Service Account Id Get" + "title": "Response Enterprise Get Agent Policy V1 Agents Address Policy Get" } } } @@ -6322,17 +7041,17 @@ } } }, - "delete": { - "summary": "Enterprise Delete Service Account", - "operationId": "enterprise_delete_service_account_v1_service_accounts__service_account_id__delete", + "put": { + "summary": "Enterprise Set Agent Policy", + "operationId": "enterprise_set_agent_policy_v1_agents__address__policy_put", "parameters": [ { - "name": "service_account_id", + "name": "address", "in": "path", "required": true, "schema": { "type": "string", - "title": "Service Account Id" + "title": "Address" } }, { @@ -6368,6 +7087,16 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentSendPolicySetRequest" + } + } + } + }, "responses": { "200": { "description": "Successful Response", @@ -6376,7 +7105,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Delete Service Account V1 Service Accounts Service Account Id Delete" + "title": "Response Enterprise Set Agent Policy V1 Agents Address Policy Put" } } } @@ -6394,31 +7123,18 @@ } } }, - "/v1/agents": { - "get": { - "summary": "Enterprise List Agents", - "operationId": "enterprise_list_agents_v1_agents_get", + "/v1/agents/{address}/policy/entries": { + "post": { + "summary": "Enterprise Add Agent Policy Entry", + "operationId": "enterprise_add_agent_policy_entry_v1_agents__address__policy_entries_post", "parameters": [ { - "name": "org_id", - "in": "query", - "required": true, - "schema": { - "type": "string", - "minLength": 1, - "maxLength": 255, - "title": "Org Id" - } - }, - { - "name": "workspace_id", - "in": "query", + "name": "address", + "in": "path", "required": true, "schema": { "type": "string", - "minLength": 1, - "maxLength": 255, - "title": "Workspace Id" + "title": "Address" } }, { @@ -6454,6 +7170,16 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AgentSendPolicyEntryAddRequest" + } + } + } + }, "responses": { "200": { "description": "Successful Response", @@ -6462,7 +7188,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise List Agents V1 Agents Get" + "title": "Response Enterprise Add Agent Policy Entry V1 Agents Address Policy Entries Post" } } } @@ -6480,10 +7206,10 @@ } } }, - "/v1/agents/{address}": { - "get": { - "summary": "Enterprise Get Agent", - "operationId": "enterprise_get_agent_v1_agents__address__get", + "/v1/agents/{address}/policy/entries/{entry_id}": { + "delete": { + "summary": "Enterprise Remove Agent Policy Entry", + "operationId": "enterprise_remove_agent_policy_entry_v1_agents__address__policy_entries__entry_id__delete", "parameters": [ { "name": "address", @@ -6494,6 +7220,15 @@ "title": "Address" } }, + { + "name": "entry_id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Entry Id" + } + }, { "name": "authorization", "in": "header", @@ -6535,7 +7270,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Get Agent V1 Agents Address Get" + "title": "Response Enterprise Remove Agent Policy Entry V1 Agents Address Policy Entries Entry Id Delete" } } } @@ -6553,10 +7288,10 @@ } } }, - "/v1/agents/{address}/policy": { + "/v1/agents/{address}/receive-override": { "get": { - "summary": "Enterprise Get Agent Policy", - "operationId": "enterprise_get_agent_policy_v1_agents__address__policy_get", + "summary": "Enterprise Get Agent Receive Override", + "operationId": "enterprise_get_agent_receive_override_v1_agents__address__receive_override_get", "parameters": [ { "name": "address", @@ -6608,7 +7343,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Get Agent Policy V1 Agents Address Policy Get" + "title": "Response Enterprise Get Agent Receive Override V1 Agents Address Receive Override Get" } } } @@ -6626,8 +7361,8 @@ } }, "put": { - "summary": "Enterprise Set Agent Policy", - "operationId": "enterprise_set_agent_policy_v1_agents__address__policy_put", + "summary": "Enterprise Set Agent Receive Override", + "operationId": "enterprise_set_agent_receive_override_v1_agents__address__receive_override_put", "parameters": [ { "name": "address", @@ -6676,7 +7411,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AgentSendPolicySetRequest" + "$ref": "#/components/schemas/AgentReceiveOverrideSetRequest" } } } @@ -6689,7 +7424,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Set Agent Policy V1 Agents Address Policy Put" + "title": "Response Enterprise Set Agent Receive Override V1 Agents Address Receive Override Put" } } } @@ -6707,10 +7442,10 @@ } } }, - "/v1/agents/{address}/policy/entries": { + "/v1/agents/{address}/receive-override/entries": { "post": { - "summary": "Enterprise Add Agent Policy Entry", - "operationId": "enterprise_add_agent_policy_entry_v1_agents__address__policy_entries_post", + "summary": "Enterprise Add Agent Receive Override Entry", + "operationId": "enterprise_add_agent_receive_override_entry_v1_agents__address__receive_override_entries_post", "parameters": [ { "name": "address", @@ -6759,7 +7494,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AgentSendPolicyEntryAddRequest" + "$ref": "#/components/schemas/AgentReceiveOverrideEntryAddRequest" } } } @@ -6772,7 +7507,7 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Add Agent Policy Entry V1 Agents Address Policy Entries Post" + "title": "Response Enterprise Add Agent Receive Override Entry V1 Agents Address Receive Override Entries Post" } } } @@ -6790,10 +7525,10 @@ } } }, - "/v1/agents/{address}/policy/entries/{entry_id}": { + "/v1/agents/{address}/receive-override/entries/{entry_id}": { "delete": { - "summary": "Enterprise Remove Agent Policy Entry", - "operationId": "enterprise_remove_agent_policy_entry_v1_agents__address__policy_entries__entry_id__delete", + "summary": "Enterprise Remove Agent Receive Override Entry", + "operationId": "enterprise_remove_agent_receive_override_entry_v1_agents__address__receive_override_entries__entry_id__delete", "parameters": [ { "name": "address", @@ -6854,7 +7589,80 @@ "schema": { "type": "object", "additionalProperties": true, - "title": "Response Enterprise Remove Agent Policy Entry V1 Agents Address Policy Entries Entry Id Delete" + "title": "Response Enterprise Remove Agent Receive Override Entry V1 Agents Address Receive Override Entries Entry Id Delete" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + } + } + }, + "/v1/agents/{address}": { + "get": { + "summary": "Enterprise Get Agent", + "operationId": "enterprise_get_agent_v1_agents__address__get", + "parameters": [ + { + "name": "address", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Address" + } + }, + { + "name": "authorization", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Authorization" + } + }, + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "X-Api-Key" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "title": "Response Enterprise Get Agent V1 Agents Address Get" } } } @@ -12509,6 +13317,35 @@ ], "title": "AccessRequestReviewRequest" }, + "AgentReceiveOverrideEntryAddRequest": { + "properties": { + "sender_pattern": { + "type": "string", + "maxLength": 383, + "minLength": 5, + "title": "Sender Pattern" + } + }, + "type": "object", + "required": [ + "sender_pattern" + ], + "title": "AgentReceiveOverrideEntryAddRequest" + }, + "AgentReceiveOverrideSetRequest": { + "properties": { + "override_type": { + "type": "string", + "pattern": "^(open|allowlist|closed|use_org_default)$", + "title": "Override Type" + } + }, + "type": "object", + "required": [ + "override_type" + ], + "title": "AgentReceiveOverrideSetRequest" + }, "AgentSendPolicyEntryAddRequest": { "properties": { "sender_pattern": { @@ -14214,6 +15051,35 @@ "type": "object", "title": "MemberUpdateRequest" }, + "OrgReceivePolicyEntryAddRequest": { + "properties": { + "sender_pattern": { + "type": "string", + "maxLength": 383, + "minLength": 5, + "title": "Sender Pattern" + } + }, + "type": "object", + "required": [ + "sender_pattern" + ], + "title": "OrgReceivePolicyEntryAddRequest" + }, + "OrgReceivePolicySetRequest": { + "properties": { + "policy_type": { + "type": "string", + "pattern": "^(open|allowlist|closed)$", + "title": "Policy Type" + } + }, + "type": "object", + "required": [ + "policy_type" + ], + "title": "OrgReceivePolicySetRequest" + }, "OrganizationCreateRequest": { "properties": { "name": {