diff --git a/docs/mcp-api-reference.md b/docs/mcp-api-reference.md new file mode 100644 index 0000000..f8127db --- /dev/null +++ b/docs/mcp-api-reference.md @@ -0,0 +1,536 @@ +# AXME MCP API Reference + +The AXME MCP server exposes 28 tools over JSON-RPC 2.0. Any MCP-enabled AI assistant (Claude, ChatGPT, Gemini) can connect to invoke these tools. + +## Protocol + +| Property | Value | +|---|---| +| Protocol | JSON-RPC 2.0 | +| MCP version | 2024-11-05 | +| Endpoint | `POST /mcp` | +| Batch requests | Supported | +| Transport | HTTP | + +### Example request + +```http +POST /mcp +Content-Type: application/json +Authorization: Bearer + +{ + "jsonrpc": "2.0", + "id": 1, + "method": "tools/call", + "params": { + "name": "axme.send_message", + "arguments": { + "recipient": "alice", + "message": "Hello" + } + } +} +``` + +### Response envelope + +All tool responses follow this shape: + +```json +{ + "ok": true, + "tool": "axme.tool_name", + "status": "completed", + "owner_agent": "agent://owner_address", + "data": {}, + "content": [{"type": "text", "text": "..."}] +} +``` + +Possible `status` values: `completed`, `pending_upload`, `needs_clarification`, `contact_not_found`, `disabled`, `not_implemented`. + +### Error codes + +| Code | Meaning | +|---|---| +| -32600 | Parse error | +| -32601 | Method not found | +| -32602 | Invalid parameters | +| -32001 | Authentication required | +| -32002 | Owner agent required | +| -32003 | Owner mismatch | +| -32004 | Rate limit exceeded | +| -32010 | Gateway error | +| -32011 | Resolution error | + +--- + +## Authentication + +### Bearer token (primary) + +```http +Authorization: Bearer +``` + +- JWT issued by the AXME auth service +- 15-minute TTL +- Required claims: `sub`, `sid`, `owner_agent` +- Scope required: `axme.api` + +### Service account key (server-to-server) + +```http +x-api-key: +``` + +### Public methods (no auth required) + +`initialize`, `tools/list`, `ping`, `axme.check_nick`, `axme.register_nick`, `axme.check_invite_status` + +--- + +## Rate limits + +- **120 calls/minute** per `(owner_agent, tool_name)` pair +- Exceeded: HTTP 429 / RPC code -32004 + +--- + +## Non-tool methods + +| Method | Description | +|---|---| +| `initialize` | Returns server info and protocol version | +| `tools/list` | Lists available tools for the authenticated profile | +| `tools/call` | Invokes a tool (see below) | +| `ping` | Echo — returns `{pong: true}` | +| `resources/list` | Returns empty array | +| `prompts/list` | Returns empty array | + +--- + +## Tools + +### Account + +#### `axme.register_nick` + +Create a new account with a nick. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `nick` | string | ✅ | Unique short identifier | +| `display_name` | string | — | Human-readable name | +| `phone` | string | — | Phone number | +| `email` | string | — | Email address | + +**Response:** Profile object with `owner_agent`. + +> Note: hidden in assistant-facing profiles by default (`AXME_MCP_EXPOSE_ACCOUNT_TOOLS=false`). + +--- + +#### `axme.check_nick` + +Check nick availability before registration. No auth required. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `nick` | string | ✅ | Nick to check | + +**Response:** Availability result. + +--- + +#### `axme.rename_nick` + +Rename or update account profile. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `nick` | string | ✅ | New nick | +| `display_name` | string | — | New display name | +| `phone` | string | — | New phone | +| `email` | string | — | New email | + +**Response:** Updated profile. + +--- + +#### `axme.get_profile` + +Get the current user's public profile. + +No parameters. + +**Response:** Profile object. + +--- + +#### `axme.update_profile` + +Update profile fields without changing nick. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `nick` | string | — | New nick | +| `display_name` | string | — | New display name | +| `phone` | string | — | New phone | +| `email` | string | — | New email | + +**Response:** Updated profile. + +--- + +### Contacts + +#### `axme.resolve_contact` + +Resolve a nick or address to a canonical agent address. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `query` | string | ✅ | Nick, email, or agent address (min length 1) | + +**Response:** Canonical agent address with resolution metadata. + +--- + +### Messaging + +#### `axme.send_message` + +Send a text message to a recipient. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `recipient` | string | ✅ | Nick, email, or agent address | +| `message` | string | — | Message text (alias: `text`) | +| `text` | string | — | Message text (alias: `message`) | +| `idempotency_key` | string | — | Deduplication key | +| `attachments` | array | — | Array of `{upload_id: string}` | + +**Response:** +```json +{ + "ok": true, + "status": "accepted", + "intent_id": "uuid", + "data": { + "delivery": "...", + "resolution": "...", + "recipient_agent": "agent://..." + } +} +``` + +--- + +#### `axme.send` + +Universal send with extended content kinds and delivery semantics. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `to` | string | ✅ | Recipient (alias for `recipient`) | +| `message` | string | — | Text content | +| `content_kind` | enum | — | `text`, `intent`, `media`, `system` | +| `intent` | object | — | Intent payload (when `content_kind=intent`) | +| `semantic_type` | string | — | e.g. `intent.ask.v1` | +| `schema_ref` | string | — | Schema reference URL | +| `schema_mode` | enum | — | `none`, `warn`, `enforce` | +| `chat_file` | object | — | `{download_url, file_id, filename, mime_type}` — auto-uploaded | +| `ack` | enum | — | `accepted`, `delivered`, `read`, `processed` | +| `idempotency_key` | string | — | Deduplication key | +| `attachments` | array | — | Array of `{upload_id: string}` | + +> When `chat_file` is provided, the file is automatically downloaded and uploaded to AXME media storage before sending. + +**Response:** Extended delivery response with `intent_id` for tracking. + +--- + +#### `axme.confirm_send` + +Optional confirmation step for a pending send. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `intent_id` | string | ✅ | Intent ID from `send` or `send_message` | +| `confirm` | boolean | ✅ | Confirm or cancel | + +**Response:** `{ok: true, status: "not_implemented"}` — stub, not yet active. + +--- + +### Dialogs + +#### `axme.list_dialogs` + +List messenger-style dialogs grouped by counterparty. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `unread_only` | boolean | — | Filter to unread dialogs only | +| `limit` | integer | — | 1–100, default 20 | + +**Response:** Dialog list with unread counts. Rendered as IRC-style plain text with attachment indexes. + +--- + +#### `axme.open_dialog` + +Open a dialog and retrieve message history. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `dialog_id` | string | — | Dialog ID | +| `with` | string | — | Nick or agent address of counterparty | +| `limit` | integer | — | 1–50, default 10 | +| `before_message_id` | string | — | Cursor for pagination | +| `mark_read` | boolean | — | Auto-mark as read, default `true` | + +> Provide either `dialog_id` or `with`, not both. + +**Response:** Dialog with message history. + +--- + +#### `axme.list_threads` (alias: `axme.list_inbox`) + +List inbox threads with optional status filter. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `status` | enum | — | `unread`, `read`, `pending`, `active`, `done` | + +**Response:** `{ok: true, status: "completed", data: {threads: []}}` + +--- + +#### `axme.get_thread` + +Get full thread details including file download links. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `thread_id` | string | ✅ | Thread ID | + +**Response:** Thread details with `file_markdown` array of direct download links. + +--- + +### Message operations + +#### `axme.reply` + +Reply to an existing thread. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `thread_id` | string | ✅ | Thread ID | +| `message` | string | ✅ | Reply text | + +**Response:** Updated thread with new message. + +--- + +#### `axme.mark_read` + +Mark a thread as read. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `thread_id` | string | ✅ | Thread ID | + +**Response:** Updated thread status. + +--- + +#### `axme.delete_messages` + +Delete messages from a thread. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `thread_id` | string | ✅ | Thread ID | +| `mode` | enum | — | `self` (own side only) or `both` (all parties), default `self` | +| `message_ids` | array | — | Specific message IDs to delete | +| `last_n` | integer | — | Delete last N messages (1–100) | + +> Provide either `message_ids` or `last_n`, not both. + +**Response:** Updated thread after deletion. + +--- + +### Invites + +#### `axme.generate_invite_link` + +Generate a one-time invite link. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `recipient_hint` | string | — | Optional hint (shown to invitee) | +| `ttl_seconds` | integer | — | 60–1209600 (up to 14 days) | + +**Response:** +```json +{ + "ok": true, + "status": "completed", + "data": { + "invite_token": "...", + "link": "https://..." + } +} +``` + +--- + +#### `axme.check_invite_status` + +Check invite status. No auth required. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `token` | string | ✅ | Invite token | + +**Response:** Invite status and metadata. + +--- + +### Media uploads + +#### `axme.media_create_upload` + +Initiate a resumable upload and receive a pre-signed upload URL. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `filename` | string | ✅ | Original filename | +| `mime_type` | string | ✅ | MIME type | +| `size_bytes` | integer | ✅ | File size in bytes (1–2147483648) | +| `sha256` | string | — | SHA-256 hex digest (64 chars) for integrity check | +| `ttl_seconds` | integer | — | 60–604800 (up to 7 days) | + +**Response:** +```json +{ + "ok": true, + "status": "pending_upload", + "data": { + "upload_url": "https://...", + "upload_id": "uuid" + } +} +``` + +After receiving `upload_url`, PUT the file bytes directly to that URL, then call `axme.media_finalize_upload`. + +--- + +#### `axme.media_upload_inline` + +Upload a file inline as base64. Use when direct PUT to `upload_url` is blocked. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `filename` | string | ✅ | Original filename | +| `mime_type` | string | ✅ | MIME type | +| `content_base64` | string | ✅ | Base64-encoded file content | + +**Response:** `{ok: true, status: "ready", data: {upload_id, ...}}` + +--- + +#### `axme.media_finalize_upload` + +Finalize after a direct PUT upload. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `upload_id` | string | ✅ | Upload ID from `media_create_upload` | +| `size_bytes` | integer | ✅ | Actual uploaded size (1–2147483648) | +| `sha256` | string | — | SHA-256 hex digest for integrity verification | + +**Response:** `{ok: true, status: "ready", data: {upload_id, ...}}` + +--- + +#### `axme.media_get_upload` + +Get current upload status. + +| Parameter | Type | Required | Description | +|---|---|---|---| +| `upload_id` | string | ✅ | Upload ID | + +**Response:** `{ok: true, status: "completed", data: upload_status}` + +--- + +## MCP + AXME continuation pattern + +MCP defines **what** your agent can do. AXME defines **how long** it takes and what happens next. + +``` +AI assistant + │ MCP tools/call + ▼ +AXME MCP server ← tools exposed here + │ POST /v1/intents + ▼ +AXME intent lifecycle ← durable execution here + │ stream / poll / reply_to + ▼ +Terminal event (completed / failed / canceled) +``` + +**Minimal pattern:** + +```python +# 1. Use MCP tool to send or trigger intent +result = mcp.call("axme.send", {"to": "agent://target", "message": "process this"}) +intent_id = result["intent_id"] + +# 2. Observe via AXME SDK (survives disconnects) +for event in axme.observe(intent_id, since=last_seq): + persist(event.seq) # save cursor for reconnect + if event.status in {"completed", "failed", "canceled"}: + break +``` + +See the full [Continuation pattern guide](./mcp-axme-continuation-pattern.md) for polling, SSE stream, and offline worker patterns. + +--- + +## Dialog rendering + +Dialog messages are rendered as IRC-style plain text: + +``` +[10:32] alice: Hello, can you review this PR? +[10:33] you: Sure, sending it now. + [1] attachment: pr-diff.patch (12.4 KB) — [Download] +``` + +Inline images are rendered as markdown image blocks when `AXME_MCP_INLINE_IMAGE_BLOCKS=true` (default). + +--- + +## Limits + +| Limit | Value | +|---|---| +| Rate limit | 120 calls/min per (owner, tool) | +| Max file size | 2 GB (2147483648 bytes) | +| Upload TTL max | 7 days (604800 seconds) | +| Invite TTL max | 14 days (1209600 seconds) | +| Gateway timeout | 10 seconds | +| Registry timeout | 10 seconds | +| JWT clock skew | 60 seconds | +| JWT TTL | 15 minutes | 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": {