{"openapi":"3.1.0","info":{"title":"Agent Handler","version":"1.0.0"},"paths":{"/api/v1/connectors/":{"get":{"operationId":"connectors_connectorsList","summary":"List connectors","description":"Retrieves a list of Connectors","tags":["connectors"],"parameters":[{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}},{"name":"search","in":"query","description":"Case-insensitive filter across connector name and slug. Only connectors matching the term are returned.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedConnectorDetailPublicResponseList"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/connectors/{slug}/":{"get":{"operationId":"connectors_connectorsRetrieve","summary":"Get connector","description":"Retrieves a Connector by slug","tags":["connectors"],"parameters":[{"name":"slug","in":"path","description":"The slug of the Connector","required":true,"schema":{"type":"string"}},{"name":"auth_mode","in":"query","description":"Set to 'runtime' to return credential_fields instead of full auth_options.","required":false,"schema":{"type":"string"}},{"name":"include_tool_details","in":"query","description":"When true, tools include input_schema, output_schema, and annotations.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorDetailPublicResponse"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/application-credentials/":{"get":{"operationId":"applicationCredentials_applicationCredentialsList","summary":"List application credentials","description":"Lists OAuth application credentials for the organization.","tags":["applicationCredentials"],"parameters":[{"name":"external_id","in":"query","description":"Filter by external_id","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}},{"name":"slug","in":"query","description":"Filter by connector slug","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedApplicationCredentialPublicResponseList"}}}}},"security":[{"tokenAuth":[]}]},"post":{"operationId":"applicationCredentials_applicationCredentialsCreate","summary":"Create application credential","description":"Creates an OAuth application credential for a connector. The `external_id` field is optional — omit it unless you need multiple OAuth apps for the same connector (e.g. one per customer tenant).","tags":["applicationCredentials"],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationCredentialPublicResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationCredentialPublicCreate"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/application-credentials/{id}/":{"get":{"operationId":"applicationCredentials_applicationCredentialsRetrieve","summary":"Get application credential","description":"Retrieves an OAuth application credential by ID.","tags":["applicationCredentials"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationCredentialPublicResponse"}}}}},"security":[{"tokenAuth":[]}]},"delete":{"operationId":"applicationCredentials_applicationCredentialsDestroy","summary":"Delete application credential","description":"Deletes an OAuth application credential. This also deletes all associated user credentials.","tags":["applicationCredentials"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No response body","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[{"tokenAuth":[]}]},"patch":{"operationId":"applicationCredentials_applicationCredentialsPartialUpdate","summary":"Update application credential","description":"Partially updates an OAuth application credential. Only fields included in the request body are updated; omitted fields are left unchanged. Pass null to explicitly clear a field (e.g. client_secret or external_id).","tags":["applicationCredentials"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationCredentialPublicResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedApplicationCredentialUpdate"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/credentials/registered-users/{registered_user_id}/connectors/{connector_slug}/":{"delete":{"operationId":"credentials_registeredUsersConnectorsDestroy","summary":"Delete credentials","description":"Deletes credentials for a Registered User's Connector","tags":["credentials"],"parameters":[{"name":"connector_slug","in":"path","description":"The slug of the Connector","required":true,"schema":{"type":"string"}},{"name":"registered_user_id","in":"path","description":"Agent Handler ID of the Registered User","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No response body","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/access-keys/":{"get":{"operationId":"accessKeys_accessKeysList","summary":"List access keys","description":"Lists active access keys for the organization.","tags":["accessKeys"],"parameters":[{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedAccessKeyList"}}}}},"security":[{"tokenAuth":[]}]},"post":{"operationId":"accessKeys_accessKeysCreate","summary":"Create access key","description":"Creates a new access key. Can be scoped to specific tool packs and registered users. The new key's scope must be a subset of the parent key (the access key authenticating this request).","tags":["accessKeys"],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessKeyCreate"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessKeyCreateRequest"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/access-keys/{key_id}/":{"get":{"operationId":"accessKeys_accessKeysRetrieve","summary":"Get access key","description":"Retrieves an access key by id.","tags":["accessKeys"],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessKey"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/access-keys/{key_id}/regenerate/":{"post":{"operationId":"accessKeys_regenerate","summary":"Regenerate access key secret","description":"Rotates the secret of an existing access key. Scope and expiration are preserved; only the secret value changes. The calling key may only regenerate itself or keys within its own scope; anything else returns 403. Keys linked to a service account have no secret to rotate and return 400.","tags":["accessKeys"],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessKeyCreate"}}}},"400":{"description":"The key is linked to a service account and has no secret to rotate.","content":{"application/json":{"schema":{"description":"Any type"}}}},"403":{"description":"The calling key does not cover the target key.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/access-keys/{key_id}/revoke/":{"post":{"operationId":"accessKeys_accessKeysRevoke","summary":"Revoke access key","description":"Revokes an access key. Revocation is permanent. The calling key may only revoke itself or keys within its own scope; anything else returns 403. The organization's last unrestricted production key cannot be revoked and returns 400; create a replacement key first, or regenerate it instead.","tags":["accessKeys"],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No response body","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"The key is the organization's last unrestricted production key and cannot be revoked.","content":{"application/json":{"schema":{"description":"Any type"}}}},"403":{"description":"The calling key does not cover the target key.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/audit-log/":{"get":{"operationId":"auditLog_auditLogList","summary":"List audit log events","description":"Retrieves a paginated list of audit log events for the organization. Events are ordered by creation time, with the most recent first.","tags":["auditLog"],"parameters":[{"name":"created_after","in":"query","description":"Filter events created on or after this date (ISO 8601)","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"created_before","in":"query","description":"Filter events created on or before this date (ISO 8601)","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"event_type","in":"query","description":"Filter by event type","required":false,"schema":{"$ref":"#/components/schemas/ApiV1AuditLogGetParametersEventType"}},{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}},{"name":"user_id","in":"query","description":"Filter by user ID","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedAuditLogEventPublicList"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/registered-users/":{"get":{"operationId":"registeredUsers_registeredUsersList","summary":"List Registered Users","description":"Retrieves a list of Registered Users. By default only production users are returned; for organizations with environment matching enabled, a test access key instead returns only test users. Use is_test or include_test_users to control the result explicitly.","tags":["registeredUsers"],"parameters":[{"name":"include_test_users","in":"query","description":"When true, return both test and production users. Ignored if is_test is provided.","required":false,"schema":{"type":"boolean"}},{"name":"is_test","in":"query","description":"When true, return only test users; when false, return only production users. Overrides the access-key default.","required":false,"schema":{"type":"boolean"}},{"name":"origin_user_id","in":"query","description":"Filter by the origin user ID of the Registered User","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedRegisteredUserPublicResponseList"}}}}},"security":[{"tokenAuth":[]}]},"post":{"operationId":"registeredUsers_registeredUsersCreate","summary":"Create Registered User","description":"Creates a Registered User with the given values. Idempotent on `origin_user_id`: if one already exists in your organization with that `origin_user_id`, it is returned unchanged with a 200 instead of a duplicate being created. Use `PATCH /registered-users/{id}` to change an existing Registered User.","tags":["registeredUsers"],"responses":{"200":{"description":"A Registered User with this `origin_user_id` already existed and was returned unchanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredUserPublicResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredUserPublicRequest"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/registered-users/{registered_user_id}/":{"get":{"operationId":"registeredUsers_registeredUsersRetrieve","summary":"Get Registered User","description":"Retrieves a Registered User by ID","tags":["registeredUsers"],"parameters":[{"name":"registered_user_id","in":"path","description":"Agent Handler ID of the Registered User","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredUserPublicResponse"}}}}},"security":[{"tokenAuth":[]}]},"delete":{"operationId":"registeredUsers_registeredUsersDestroy","summary":"Delete Registered User","description":"Deletes a Registered User by ID","tags":["registeredUsers"],"parameters":[{"name":"registered_user_id","in":"path","description":"Agent Handler ID of the Registered User","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No response body","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[{"tokenAuth":[]}]},"patch":{"operationId":"registeredUsers_registeredUsersPartialUpdate","summary":"Update Registered User","description":"Updates fields on a Registered User by ID","tags":["registeredUsers"],"parameters":[{"name":"registered_user_id","in":"path","description":"Agent Handler ID of the Registered User","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredUserPublicResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedRegisteredUserPublicRequest"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/registered-users/{registered_user_id}/link-token/":{"post":{"operationId":"linkToken_createForRegisteredUser","summary":"Create Link token","description":"Generates a Link Token for a Registered User to authenticate with Connectors. Also returns a magic link URL that can be shared with the user to authenticate in a browser.","tags":["linkToken"],"parameters":[{"name":"registered_user_id","in":"path","description":"Agent Handler ID of the Registered User","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/linkToken_createForRegisteredUser_Response_201"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"connector":{"type":"string","description":"Slug of the connector to generate a link token for"},"external_id":{"type":["string","null"],"description":"Optional external ID to scope the link token to a specific application credential. Use this when you have multiple OAuth apps for the same connector."},"callback_url":{"type":["string","null"],"description":"Optional URL to redirect the user to after they complete the authentication flow. Must be added to your organization's allowed callback origins first."},"state":{"type":["string","null"],"description":"Optional CSRF protection token returned to your callback_url after authentication. Requires callback_url to be set. Do not include a 'state' query parameter in callback_url if using this field."}},"required":["connector"]}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/connections/":{"get":{"operationId":"connections_connectionsList","summary":"List Connections","description":"Lists authenticated connections across all auth scopes.","tags":["connections"],"parameters":[{"name":"auth_scope","in":"query","description":"Filter by auth scope: INDIVIDUAL (one registered user), SHARED (one company), or ORGANIZATION (the whole organization). Accepts a comma-separated list to match more than one.","required":false,"schema":{"type":"string"}},{"name":"company","in":"query","description":"Filter shared connections by company origin ID.","required":false,"schema":{"type":"string"}},{"name":"connector","in":"query","description":"Filter by connector slug.","required":false,"schema":{"type":"string"}},{"name":"created_at_after","in":"query","description":"Only connections created at or after this ISO datetime.","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"created_at_before","in":"query","description":"Only connections created at or before this ISO datetime.","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}},{"name":"status","in":"query","description":"Filter by status: ACTIVE or ERROR. ERROR surfaces connections retired on a terminal auth failure (issues). Accepts a comma-separated list.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedConnectionList"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/connections/{connection_id}/":{"get":{"operationId":"connections_connectionsRetrieve","summary":"Retrieve Connection","description":"Retrieves a single connection by ID.","tags":["connections"],"parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Connection"}}}}},"security":[{"tokenAuth":[]}]},"delete":{"operationId":"connections_connectionsRevoke","summary":"Revoke Connection","description":"Revokes (deletes) a single connection. For SHARED and ORGANIZATION connections, `?auth_scope=<scope>` must equal the connection's scope to confirm the revocation (accidental-mass-revoke guard).","tags":["connections"],"parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"auth_scope","in":"query","description":"Required for SHARED / ORGANIZATION connections; must equal the connection's auth scope to confirm revocation.","required":false,"schema":{"type":"string"}}],"responses":{"204":{"description":"No response body","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[{"tokenAuth":[]}]},"patch":{"operationId":"connections_update","summary":"Update Connection Access","description":"Replaces the full set of registered users excluded from a SHARED or ORGANIZATION connection. Each entry is a registered-user ID. Returns 400 for INDIVIDUAL connections or unknown registered-user IDs.","tags":["connections"],"parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Connection"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedConnectionUpdate"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/tool-packs/":{"get":{"operationId":"toolPacks_toolPacksList","summary":"List Tool Packs","description":"Retrieves a list of Tool Packs","tags":["toolPacks"],"parameters":[{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedToolPackPublicList"}}}}},"security":[{"tokenAuth":[]}]},"post":{"operationId":"toolPacks_toolPacksCreate","summary":"Create Tool Pack","description":"Creates a Tool Pack with connectors","tags":["toolPacks"],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolPackPublic"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolPackPublicWrite"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/tool-packs/{id}/":{"get":{"operationId":"toolPacks_toolPacksRetrieve","summary":"Get Tool Pack","description":"Retrieves a Tool Pack by ID","tags":["toolPacks"],"parameters":[{"name":"id","in":"path","description":"Agent Handler ID of the Tool Pack","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolPackPublic"}}}}},"security":[{"tokenAuth":[]}]},"delete":{"operationId":"toolPacks_toolPacksDestroy","summary":"Delete Tool Pack","description":"Deletes a Tool Pack by ID","tags":["toolPacks"],"parameters":[{"name":"id","in":"path","description":"Agent Handler ID of the Tool Pack","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No response body","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[{"tokenAuth":[]}]},"patch":{"operationId":"toolPacks_toolPacksPartialUpdate","summary":"Update Tool Pack","description":"Updates a Tool Pack by ID","tags":["toolPacks"],"parameters":[{"name":"id","in":"path","description":"Agent Handler ID of the Tool Pack","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolPackPublic"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedToolPackPublicWrite"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/tool-packs/{tool_pack_id}/connectors/":{"get":{"operationId":"toolPacks_listConnectors","summary":"List connectors in a Tool Pack","description":"List the connectors attached to a tool pack, with the tools enabled on each connector.","tags":["toolPacks"],"parameters":[{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectorPublic"}}}}}},"security":[{"tokenAuth":[]}]},"put":{"operationId":"toolPacks_replaceConnectors","summary":"Update connectors in a Tool Pack","description":"Replace a tool pack's connector list declaratively. Any connector not in the request body is removed from the tool pack.\n\n`tool_names` behavior per item:\n- Omitted: all tools are enabled on the connector.\n- `[]` (empty list): the connector is removed from the tool pack.\n- Otherwise: exactly these tools are enabled.\n\nReturns the updated list of connectors on the tool pack.","tags":["toolPacks"],"parameters":[{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectorPublic"}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ToolPackConnectorBulkInput"}}}}},"security":[{"tokenAuth":[]}]},"patch":{"operationId":"toolPacks_bulkUpsertDeleteConnectors","summary":"Update connectors in a Tool Pack (partial)","description":"Partially update a tool pack's connectors. Connectors not listed in the request body are left untouched.\n\n`tool_names` behavior per item:\n- Omitted (new connector): all tools are enabled.\n- Omitted (existing connector): the connector's tools are left unchanged.\n- `[]` (empty list): the connector is removed from the tool pack.\n- Otherwise: exactly these tools are enabled.\n\nReturns the updated list of connectors on the tool pack.","tags":["toolPacks"],"parameters":[{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectorPublic"}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ToolPackConnectorBulkInput"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/tool-packs/{tool_pack_id}/connectors/{slug}/":{"delete":{"operationId":"toolPacks_deleteConnector","summary":"Remove a connector from a Tool Pack","description":"Remove a single connector from a tool pack by slug. Returns 204 No Content.","tags":["toolPacks"],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No response body","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/connectors/tool-description-overrides/":{"get":{"operationId":"toolDescriptionOverrides_toolDescriptionOverridesList","summary":"List tool description overrides (connector)","description":"List tool description overrides, optionally filtered by connector slug. Returns paginated results.","tags":["toolDescriptionOverrides"],"parameters":[{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}},{"name":"slug","in":"query","description":"Filter by connector slug.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedToolDescriptionOverrideList"}}}}},"security":[{"tokenAuth":[]}]},"patch":{"operationId":"toolDescriptionOverrides_bulkUpsertDelete","summary":"Bulk upsert/delete tool description overrides (connector)","description":"Bulk upsert or delete tool description overrides. Send a list of items with connector_slug, tool_name, and description. Set description to null to delete an override.","tags":["toolDescriptionOverrides"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ToolDescriptionOverride"}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BulkToolDescriptionOverrideInput"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/tool-packs/{tool_pack_id}/tool-description-overrides/":{"get":{"operationId":"toolDescriptionOverrides_listToolPack","summary":"List tool description overrides (Tool Pack)","description":"List tool-pack-level description overrides, optionally filtered by connector slug. Returns paginated results.","tags":["toolDescriptionOverrides"],"parameters":[{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}},{"name":"slug","in":"query","description":"Filter by connector slug.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedToolPackToolDescriptionOverrideList"}}}}},"security":[{"tokenAuth":[]}]},"patch":{"operationId":"toolDescriptionOverrides_bulkUpsertDeleteToolPack","summary":"Bulk upsert/delete tool description overrides (Tool Pack)","description":"Bulk upsert or delete tool-pack-level description overrides. Send a list of items with connector_slug, tool_name, and description. Set description to null to delete an override.","tags":["toolDescriptionOverrides"],"parameters":[{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ToolDescriptionOverride"}}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BulkToolDescriptionOverrideInput"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/tool-packs/{tool_pack_id}/registered-users/{registered_user_id}/mcp/":{"post":{"operationId":"mcp_endpointPost","summary":"MCP endpoint - list tools & call tool","description":"Endpoint to list tools and call a tool. Use the `tools/list` method to retrieve available tools, and the `tools/call` method to execute a specific tool. Implements the JSON-RPC 2.0 MCP specification.","tags":["MCP"],"parameters":[{"name":"registered_user_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"authenticated_only","in":"query","description":"When true, only return tools for connectors the registered user has already authenticated, and hide per-connector `authenticate_*` tools.","required":false,"schema":{"type":"boolean","default":false}},{"name":"connectors","in":"query","description":"Restrict `tools/list` and `tools/call` to one or more connectors. For multiple values, repeat the param (`?connectors=slack&connectors=github`) or use comma-separate values (`?connectors=slack,github`).","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"format","in":"query","required":false,"schema":{"$ref":"#/components/schemas/ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostParametersFormat"}}],"responses":{"200":{"description":"JSON-RPC 2.0 response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/mcp_endpointPost_Response_200"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"jsonrpc":{"type":"string"},"id":{"type":"integer"},"method":{"$ref":"#/components/schemas/ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostRequestBodyContentApplicationJsonSchemaMethod"},"params":{"$ref":"#/components/schemas/ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostRequestBodyContentApplicationJsonSchemaParams"}},"required":["jsonrpc","method"]}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/tool-packs/{tool_pack_id}/registered-users/{registered_user_id}/search/":{"post":{"operationId":"toolSearch_searchTools","summary":"Search tools","description":"Search for tools based on user intent","tags":["toolSearch"],"parameters":[{"name":"registered_user_id","in":"path","description":"Agent Handler ID of the Registered User","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"tool_pack_id","in":"path","description":"Agent Handler ID of the Tool Pack","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successfully found tools matching the intent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/toolSearch_searchTools_Response_200"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolSearchRequest"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/security/standard-entity-rules/":{"get":{"operationId":"standardEntityRules_listStandardEntityRules","summary":"List standard entity rules","description":"Returns all standard entity rules for the organization.","tags":["standardEntityRules"],"parameters":[{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedStandardEntityRuleResponseList"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/security/standard-entity-rules/{entity_type}/":{"get":{"operationId":"standardEntityRules_getStandardEntityRule","summary":"Get standard entity rule","description":"Retrieve a single standard entity rule by entity type.","tags":["standardEntityRules"],"parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardEntityRuleResponse"}}}}},"security":[{"tokenAuth":[]}]},"put":{"operationId":"standardEntityRules_updateStandardEntityRule","summary":"Update standard entity rule","description":"Update a standard entity rule. All writable fields (is_active, inbound_action, outbound_action) are required.","tags":["standardEntityRules"],"parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardEntityRuleResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardEntityRulePutInput"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/tool-packs/{tool_pack_id}/standard-entity-rules/":{"get":{"operationId":"standardEntityRules_listStandardEntityRulesToolPack","summary":"List standard entity rules (Tool Pack)","description":"Returns standard entity rules for a tool pack, including organization defaults. Tool-pack-level rules take precedence where both exist.","tags":["standardEntityRules"],"parameters":[{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"defined_at","in":"query","description":"Filter by where the rule is defined. Values: ORGANIZATION, TOOL_PACK.","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedPublicCombinedSecurityRuleList"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/tool-packs/{tool_pack_id}/standard-entity-rules/{entity_type}/":{"get":{"operationId":"standardEntityRules_getStandardEntityRuleToolPack","summary":"Get standard entity rule (Tool Pack)","description":"Retrieve a single standard entity rule for a tool pack by entity type.","tags":["standardEntityRules"],"parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string"}},{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCombinedSecurityRule"}}}}},"security":[{"tokenAuth":[]}]},"put":{"operationId":"standardEntityRules_upsertStandardEntityRuleOverrideToolPack","summary":"Create or update standard entity rule override (Tool Pack)","description":"Create or update a standard entity rule override for a tool pack. All fields required.","tags":["standardEntityRules"],"parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string"}},{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCombinedSecurityRule"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardEntityOverridePutInput"}}}},"security":[{"tokenAuth":[]}]},"delete":{"operationId":"standardEntityRules_deleteStandardEntityRuleOverrideToolPack","summary":"Delete standard entity rule override (Tool Pack)","description":"Delete a standard entity rule override, reverting to organization defaults.","tags":["standardEntityRules"],"parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string"}},{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No response body","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/security/custom-regex-rules/":{"get":{"operationId":"customRegexRules_listCustomRegexRules","summary":"List custom regex rules","description":"Returns all custom regex rules for the organization.","tags":["customRegexRules"],"parameters":[{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedCustomRegexRuleResponseList"}}}}},"security":[{"tokenAuth":[]}]},"post":{"operationId":"customRegexRules_createCustomRegexRule","summary":"Create custom regex rule","description":"Create a new custom regex rule for the organization.","tags":["customRegexRules"],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomRegexRuleResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomRegexRuleCreateInput"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/security/custom-regex-rules/{rule_id}/":{"get":{"operationId":"customRegexRules_getCustomRegexRule","summary":"Get custom regex rule","description":"Retrieve a single custom regex rule by ID.","tags":["customRegexRules"],"parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomRegexRuleResponse"}}}}},"security":[{"tokenAuth":[]}]},"delete":{"operationId":"customRegexRules_deleteCustomRegexRule","summary":"Delete custom regex rule","description":"Delete a custom regex rule.","tags":["customRegexRules"],"parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No response body","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[{"tokenAuth":[]}]},"patch":{"operationId":"customRegexRules_updateCustomRegexRule","summary":"Update custom regex rule","description":"Update a custom regex rule. Name cannot be changed after creation.","tags":["customRegexRules"],"parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomRegexRuleResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedCustomRegexRuleUpdateInput"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/tool-packs/{tool_pack_id}/custom-regex-rules/":{"get":{"operationId":"customRegexRules_listCustomRegexRulesToolPack","summary":"List custom regex rules (Tool Pack)","description":"Returns custom regex rules for a tool pack, including organization defaults. Tool-pack-level rules take precedence where both exist.","tags":["customRegexRules"],"parameters":[{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"defined_at","in":"query","description":"Filter by where the rule is defined. Values: ORGANIZATION, TOOL_PACK.","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedPublicCombinedCustomRegexRuleList"}}}}},"security":[{"tokenAuth":[]}]},"post":{"operationId":"customRegexRules_createCustomRegexRuleToolPack","summary":"Create custom regex rule (Tool Pack)","description":"Create a custom regex rule for a tool pack. If name matches an org rule, creates an override.","tags":["customRegexRules"],"parameters":[{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCombinedCustomRegexRule"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomRegexOverrideCreateInput"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/tool-packs/{tool_pack_id}/custom-regex-rules/{rule_id}/":{"get":{"operationId":"customRegexRules_getCustomRegexRuleToolPack","summary":"Get custom regex rule (Tool Pack)","description":"Retrieve a single custom regex rule for a tool pack by ID.","tags":["customRegexRules"],"parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCombinedCustomRegexRule"}}}}},"security":[{"tokenAuth":[]}]},"delete":{"operationId":"customRegexRules_deleteCustomRegexRuleToolPack","summary":"Delete custom regex rule (Tool Pack)","description":"Delete a custom regex rule override (reverts to org default) or permanently delete a tool-pack-only rule.","tags":["customRegexRules"],"parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"No response body","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}},"security":[{"tokenAuth":[]}]},"patch":{"operationId":"customRegexRules_updateCustomRegexRuleToolPack","summary":"Update custom regex rule (Tool Pack)","description":"Update a custom regex rule for a tool pack. Name cannot be changed after creation.","tags":["customRegexRules"],"parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"tool_pack_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCombinedCustomRegexRule"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedToolPackCustomRegexOverride"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/usage/":{"get":{"operationId":"usage_usageTotal","summary":"Get total usage","description":"Retrieves total credit usage for the organization over the given time window","tags":["usage"],"parameters":[{"name":"end_time","in":"query","description":"End of the usage window (ISO 8601 with timezone, e.g. 2026-04-30T00:00:00Z). Must be in the past.","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"start_time","in":"query","description":"Start of the usage window (ISO 8601 with timezone, e.g. 2026-04-01T00:00:00Z). Cannot be more than 90 days in the past, and the window cannot exceed 31 days.","required":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTotal"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/usage/registered-users/":{"get":{"operationId":"usage_usageRegisteredUsersList","summary":"List usage by registered user","description":"Retrieves paginated per-registered-user credit usage over the given time window","tags":["usage"],"parameters":[{"name":"end_time","in":"query","description":"End of the usage window (ISO 8601 with timezone, e.g. 2026-04-30T00:00:00Z). Must be in the past.","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}},{"name":"start_time","in":"query","description":"Start of the usage window (ISO 8601 with timezone, e.g. 2026-04-01T00:00:00Z). Cannot be more than 90 days in the past, and the window cannot exceed 31 days.","required":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedRegisteredUserUsageList"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/usage/registered-users/{registered_user_id}/":{"get":{"operationId":"usage_usageRegisteredUsersRetrieve","summary":"Get usage for a registered user","description":"Retrieves credit usage and a per-tool breakdown for one registered user over the given time window","tags":["usage"],"parameters":[{"name":"registered_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"end_time","in":"query","description":"End of the usage window (ISO 8601 with timezone, e.g. 2026-04-30T00:00:00Z). Must be in the past.","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"start_time","in":"query","description":"Start of the usage window (ISO 8601 with timezone, e.g. 2026-04-01T00:00:00Z). Cannot be more than 90 days in the past, and the window cannot exceed 31 days.","required":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisteredUserUsageDetail"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/usage/tools/":{"get":{"operationId":"usage_usageToolsList","summary":"List usage by tool","description":"Retrieves paginated per-tool credit usage over the given time window","tags":["usage"],"parameters":[{"name":"end_time","in":"query","description":"End of the usage window (ISO 8601 with timezone, e.g. 2026-04-30T00:00:00Z). Must be in the past.","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"page","in":"query","description":"A page number within the paginated result set.","required":false,"schema":{"type":"integer"}},{"name":"page_size","in":"query","description":"Number of results to return per page.","required":false,"schema":{"type":"integer"}},{"name":"start_time","in":"query","description":"Start of the usage window (ISO 8601 with timezone, e.g. 2026-04-01T00:00:00Z). Cannot be more than 90 days in the past, and the window cannot exceed 31 days.","required":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedToolUsageList"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/files/{token}/download/":{"get":{"operationId":"files_filesDownload","summary":"Download file","description":"Streams the file behind the download URL a tool call returned, authenticated with your Access Key. The URL stays fetchable until it expires, and repeat and Range requests are both fine.","tags":["files"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}},{"name":"Range","in":"header","description":"Single byte range, e.g. `bytes=0-1023`.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"No such download URL for your organization.","content":{"application/json":{"schema":{"description":"Any type"}}}},"410":{"description":"The download URL has expired. Run the tool again for a new one.","content":{"application/json":{"schema":{"description":"Any type"}}}},"416":{"description":"The requested byte range does not fit the file. Content-Range carries its size.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/files/":{"post":{"operationId":"files_filesReserve","summary":"Reserve a file upload","description":"Registers a file's metadata and returns a short-lived upload URL plus the file_reference an upload tool takes. No bytes move here; send them to the upload URL next.","tags":["files"],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileTransferReservation"}}}},"400":{"description":"Invalid or missing file metadata.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileTransferReserve"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/files/{token}/upload/":{"put":{"operationId":"files_filesUpload","summary":"Upload the reserved file","description":"Streams the file's raw bytes into the reservation, with no multipart wrapper. One successful upload per reservation; the file_reference is ready for a tool call once this returns.","tags":["files"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileTransferUploadResult"}}}},"400":{"description":"The request body was empty.","content":{"application/json":{"schema":{"description":"Any type"}}}},"404":{"description":"No such reservation for your organization.","content":{"application/json":{"schema":{"description":"Any type"}}}},"409":{"description":"This reservation has already been uploaded. Reserve another one.","content":{"application/json":{"schema":{"description":"Any type"}}}},"410":{"description":"The reservation has expired. Reserve another one.","content":{"application/json":{"schema":{"description":"Any type"}}}},"413":{"description":"File exceeds the 104857600 byte limit.","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/agent/signup/":{"post":{"operationId":"agent_agentSignup","summary":"Agent signup","description":"Creates an organization with no users, an access key for the agent, a claim link, a default tool pack and an `Agent` registered user, so the agent can call tools right away. Show the claim link to a human whenever you want them to take ownership; the key keeps working before and after they do. Rate limited per IP.","tags":["agent"],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSignupResponse"}}}}}}},"/api/v1/agent/claim/":{"post":{"operationId":"agent_agentClaimReissue","summary":"Re-issue claim link","description":"Revokes the organization's current claim link and returns a new one. Use when the link was lost or expired. Fails once a human has claimed the organization.","tags":["agent"],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentClaimResponse"}}}},"409":{"description":"Organization already has a user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentClaimConflict"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/logs/api-calls/":{"get":{"operationId":"logs_apiCalls","summary":"List API request logs","description":"Returns a cursor-paginated page of the organization's API request logs (outbound calls made during tool execution), ordered oldest-first. Poll repeatedly, passing the returned `next_cursor` as `cursor`, until `has_more` is false. Only the last 30 days of logs are available. Credential values in request/response headers (e.g. Authorization, API keys) are redacted. This endpoint is available on the Enterprise plan. Contact your account team to enable it.","tags":["logs"],"parameters":[{"name":"connector_id","in":"query","description":"Filter by connector ID.","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"created_after","in":"query","description":"Only logs at or after this timestamp (ISO 8601). Clamped to the last 30 days — older values are raised to the 30-day floor.","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"created_before","in":"query","description":"Only logs at or before this timestamp (ISO 8601).","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"cursor","in":"query","description":"Opaque cursor from a previous response's `next_cursor`.","required":false,"schema":{"type":"string"}},{"name":"method","in":"query","description":"Filter by HTTP method (GET, POST, PUT, PATCH, DELETE).","required":false,"schema":{"type":"string"}},{"name":"page_size","in":"query","description":"Records per page (1-1000, default 100).","required":false,"schema":{"type":"integer"}},{"name":"response_status","in":"query","description":"Filter by HTTP response status code.","required":false,"schema":{"type":"integer"}},{"name":"toolcall_id","in":"query","description":"Filter by the originating tool-call ID.","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiCallLogPage"}}}}},"security":[{"tokenAuth":[]}]}},"/api/v1/logs/tool-calls/":{"get":{"operationId":"logs_toolCalls","summary":"List tool call logs","description":"Returns a cursor-paginated page of the organization's tool call logs, ordered oldest-first. Poll repeatedly, passing the returned `next_cursor` as `cursor`, until `has_more` is false. Only the last 30 days of logs are available. Credential values in headers (e.g. Authorization, API keys) are redacted. This endpoint is available on the Enterprise plan. Contact your account team to enable it.","tags":["logs"],"parameters":[{"name":"connector_id","in":"query","description":"Filter by connector ID.","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"created_after","in":"query","description":"Only logs at or after this timestamp (ISO 8601). Clamped to the last 30 days — older values are raised to the 30-day floor.","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"created_before","in":"query","description":"Only logs at or before this timestamp (ISO 8601).","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"cursor","in":"query","description":"Opaque cursor from a previous response's `next_cursor`.","required":false,"schema":{"type":"string"}},{"name":"page_size","in":"query","description":"Records per page (1-1000, default 100).","required":false,"schema":{"type":"integer"}},{"name":"status","in":"query","description":"Filter by execution status.","required":false,"schema":{"type":"string"}},{"name":"tool_name","in":"query","description":"Filter by tool name (partial match).","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolCallLogPage"}}}}},"security":[{"tokenAuth":[]}]}}},"tags":[{"name":"connectors"},{"name":"applicationCredentials"},{"name":"credentials"},{"name":"accessKeys"},{"name":"auditLog"},{"name":"registeredUsers"},{"name":"linkToken"},{"name":"connections"},{"name":"toolPacks"},{"name":"toolDescriptionOverrides"},{"name":"MCP"},{"name":"toolSearch"},{"name":"standardEntityRules"},{"name":"customRegexRules"},{"name":"usage"},{"name":"files"},{"name":"agent"},{"name":"logs"}],"servers":[{"url":"https://ah-api.merge.dev","description":"Production server"}],"components":{"schemas":{"SecretSchemaPublicOptionsItems":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"},"default":{"type":"boolean"}},"required":["label","value","default"],"title":"SecretSchemaPublicOptionsItems"},"SecretSchemaPublic":{"type":"object","properties":{"name":{"type":"string"},"human_readable_name":{"type":["string","null"]},"prefix":{"type":["string","null"]},"suffix":{"type":["string","null"]},"field_type":{"type":"string"},"options":{"type":["array","null"],"items":{"$ref":"#/components/schemas/SecretSchemaPublicOptionsItems"}}},"required":["name","human_readable_name","field_type","options"],"title":"SecretSchemaPublic"},"AuthOptionPublic":{"type":"object","properties":{"type":{"type":"string"},"secrets":{"type":"array","items":{"$ref":"#/components/schemas/SecretSchemaPublic"}}},"required":["type","secrets"],"title":"AuthOptionPublic"},"ConnectorTool":{"type":"object","properties":{"name":{"type":"string","description":"Name of the tool"},"description":{"type":["string","null"],"description":"Description of what the tool does"},"input_schema":{"type":"object","additionalProperties":{"description":"Any type"},"description":"JSON Schema describing the tool's input parameters. Only returned when include_tool_details=true."},"output_schema":{"type":["object","null"],"additionalProperties":{"description":"Any type"},"description":"JSON Schema describing the tool's output. Omitted when the tool does not declare one. Only returned when include_tool_details=true."},"credit_type":{"type":"string","description":"Credit type consumed by the tool"},"annotations":{"type":["object","null"],"additionalProperties":{"type":"boolean"},"description":"MCP annotation hints (e.g. read_only, destructive). Only returned when include_tool_details=true."},"scopes":{"type":"array","items":{"type":"string"},"default":[],"description":"Third-party API scopes required by the tool. Only returned when include_tool_details=true."},"endpoints":{"type":"array","items":{"type":"string"},"default":[],"description":"Third-party API endpoints the tool calls. Only returned when include_tool_details=true."}},"required":["name","description","credit_type"],"description":"Full version of ConnectorTool serializer with schemas and annotations.","title":"ConnectorTool"},"ConnectorDetailPublicResponse":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the Connector"},"name":{"type":"string","description":"Name of the Connector"},"slug":{"type":"string","description":"Slug identifier for the Connector"},"description":{"type":"string","description":"Description of what the Connector does"},"source_url":{"type":["string","null"],"description":"URL to the Connector's source website"},"logo_url":{"type":"string","description":"URL to the Connector's logo image"},"categories":{"type":["array","null"],"items":{"type":"string"},"description":"Categories this connector belongs to"},"auth_options":{"type":"array","items":{"$ref":"#/components/schemas/AuthOptionPublic"},"description":"Authentication options available for this connector"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ConnectorTool"},"description":"List of available tools for this connector. By default each tool includes only name, description, and credit_type; pass include_tool_details=true on the detail endpoint to also include input_schema, output_schema, annotations, scopes, and endpoints."}},"required":["id","name","slug","description","source_url","logo_url","categories","auth_options","tools"],"title":"ConnectorDetailPublicResponse"},"PaginatedConnectorDetailPublicResponseList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ConnectorDetailPublicResponse"}}},"required":["count","results"],"title":"PaginatedConnectorDetailPublicResponseList"},"ApplicationCredentialPublicResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"connector_slug":{"type":"string"},"client_id":{"type":"string"},"external_id":{"type":["string","null"]},"is_global_default":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"modified_at":{"type":"string","format":"date-time"},"oauth2_scopes_override":{"type":["string","null"]}},"required":["id","connector_slug","client_id","external_id","is_global_default","created_at","modified_at","oauth2_scopes_override"],"description":"Public API response for an application credential.","title":"ApplicationCredentialPublicResponse"},"PaginatedApplicationCredentialPublicResponseList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"]},"previous":{"type":["string","null"]},"results":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationCredentialPublicResponse"}}},"required":["count","next","previous","results"],"title":"PaginatedApplicationCredentialPublicResponseList"},"ApplicationCredentialPublicCreate":{"type":"object","properties":{"connector_slug":{"type":"string","maxLength":255,"description":"Slug of the connector to create an OAuth app for."},"client_id":{"type":"string","maxLength":255},"client_secret":{"type":["string","null"],"maxLength":255},"external_id":{"type":["string","null"]},"oauth2_scopes_override":{"type":["string","null"],"maxLength":2048,"description":"Space-separated OAuth scopes to request instead of the connector's default scopes. Omit to use the connector defaults. Applies to the connector's default OAuth option; on connectors that expose more than one OAuth option, the first option is used. A value equal to the connector's default scopes is treated as no override and reads back as null."}},"required":["connector_slug","client_id"],"description":"Public API request body for creating an application credential.","title":"ApplicationCredentialPublicCreate"},"PatchedApplicationCredentialUpdate":{"type":"object","properties":{"client_id":{"type":"string","maxLength":255},"client_secret":{"type":["string","null"],"maxLength":255},"external_id":{"type":["string","null"]},"oauth2_scopes_override":{"type":["string","null"],"maxLength":2048,"description":"Space-separated OAuth scopes to request instead of the connector's default scopes, applied to the OAuth option configured on this credential. Send an empty string to clear the override and revert to the connector defaults; a cleared override reads back as an empty string, while a field that was never set reads back as null. A value equal to the connector's default scopes is treated as no override and reads back as null."}},"title":"PatchedApplicationCredentialUpdate"},"AccessKey":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":["string","null"],"description":"Human-readable label for the key."},"key_masked":{"type":"string","description":"Truncated form of the secret safe to display in UIs."},"tool_pack_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"},"description":"Tool packs this key can access. `null` means unrestricted access."},"registered_user_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"},"description":"Registered users this key can access. `null` means unrestricted access."},"scopes":{"type":"array","items":{"type":"string","maxLength":64},"description":"Limits which actions this key can perform. Available scopes: `runtime:all` (MCP tool calls), `management:all` (resource management endpoints)."},"is_test":{"type":"boolean","description":"If true, the key can only authenticate test registered users."},"expires_at":{"type":["string","null"],"format":"date-time","description":"Expiration timestamp. `null` means never expires."},"created_at":{"type":"string","format":"date-time"}},"required":["id","name","key_masked","scopes","is_test","expires_at","created_at"],"description":"Access key shape returned by list and detail endpoints.","title":"AccessKey"},"PaginatedAccessKeyList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"]},"previous":{"type":["string","null"]},"results":{"type":"array","items":{"$ref":"#/components/schemas/AccessKey"}}},"required":["count","next","previous","results"],"title":"PaginatedAccessKeyList"},"AccessKeyCreateRequest":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Human-readable label for the key. Auto-generated if omitted."},"tool_pack_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"},"description":"Tool packs this key can access. Must be a subset of the parent key's `tool_pack_ids`. Pass `null` for unrestricted access to all tool packs in the organization."},"registered_user_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"},"description":"Registered users this key can access. Must be a subset of the parent key's `registered_user_ids`. Pass `null` for unrestricted access to all registered users in the organization."},"scopes":{"type":"array","items":{"type":"string","maxLength":64},"description":"Limits which actions this key can perform. Available scopes: `runtime:all` (MCP tool calls), `management:all` (resource management endpoints)."},"is_test":{"type":"boolean","default":false,"description":"If true, the key can only authenticate test registered users."},"expires_at":{"type":["string","null"],"format":"date-time","description":"Expiration timestamp. Must be before the parent key's `expires_at`. Defaults to 90 days from now if omitted. Pass `null` explicitly for a key that never expires."},"expires_in":{"type":"integer","minimum":60,"description":"Seconds until the key expires. Alternative to `expires_at`."}},"description":"Request shape for creating or regenerating an access key.","title":"AccessKeyCreateRequest"},"AccessKeyCreate":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Human-readable label for the key. Auto-generated if omitted."},"tool_pack_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"},"description":"Tool packs this key can access. Must be a subset of the parent key's `tool_pack_ids`. Pass `null` for unrestricted access to all tool packs in the organization."},"registered_user_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"},"description":"Registered users this key can access. Must be a subset of the parent key's `registered_user_ids`. Pass `null` for unrestricted access to all registered users in the organization."},"scopes":{"type":"array","items":{"type":"string","maxLength":64},"description":"Limits which actions this key can perform. Available scopes: `runtime:all` (MCP tool calls), `management:all` (resource management endpoints)."},"is_test":{"type":"boolean","default":false,"description":"If true, the key can only authenticate test registered users."},"expires_at":{"type":["string","null"],"format":"date-time","description":"Expiration timestamp. Must be before the parent key's `expires_at`. Defaults to 90 days from now if omitted. Pass `null` explicitly for a key that never expires."},"expires_in":{"type":"integer","minimum":60,"description":"Seconds until the key expires. Alternative to `expires_at`."},"id":{"type":"string","format":"uuid"},"key":{"type":["string","null"],"description":"Raw secret value. Returned only on create or regenerate."},"key_masked":{"type":"string","description":"Truncated form of the secret safe to display in UIs."},"created_at":{"type":"string","format":"date-time"}},"required":["id","key","key_masked","created_at"],"description":"Response shape for creating or regenerating an access key.","title":"AccessKeyCreate"},"ApiV1AuditLogGetParametersEventType":{"type":"string","enum":["ALLOWED_CALLBACK_ORIGIN_CREATED","ALLOWED_CALLBACK_ORIGIN_DELETED","API_LOGS_SEARCHED","API_LOG_DETAIL_VIEWED","APPLICATION_CREDENTIAL_CREATED","APPLICATION_CREDENTIAL_DELETED","APPLICATION_CREDENTIAL_UPDATED","AUDIT_LOG_EXPORTED","BILLING_PAYMENT_METHOD_ADDED","BILLING_PAYMENT_METHOD_UPDATED","BILLING_PLAN_CHANGED","BILLING_SUBSCRIPTION_CANCELLED","BILLING_USER_SNAPSHOT_SUBMITTED","CHAT_SESSION_CREATED","CHAT_SESSION_ENDED","CONNECTOR_AUTH_SCOPE_RULE_CREATED","CONNECTOR_AUTH_SCOPE_RULE_DELETED","CONNECTOR_AUTH_SCOPE_RULE_UPDATED","CONNECTOR_DELETED","CONNECTOR_IMPORTED","CONNECTOR_UPDATED","COPILOT_INTEGRATION_BOUND","COPILOT_INTEGRATION_REBOUND","COPILOT_INTEGRATION_UNBOUND","CREDENTIAL_CREATED","CREDENTIAL_DELETED","CREDENTIAL_EXPORTED","CREDENTIAL_EXPORT_FAILED","CREDENTIAL_EXPORT_KEY_REGISTERED","CREDENTIAL_EXPORT_KEY_REVOKED","CREDENTIAL_UPDATED","DEFAULT_RESOURCES_CREATED","DESKTOP_DEVICE_ENROLLED","DESKTOP_DEVICE_IDENTITY_RESOLVED","DESKTOP_DEVICE_RE_ENROLLED","DESKTOP_GATEWAY_CREDENTIAL_ISSUED","DESKTOP_PANEL_CONFIGURED","DESKTOP_TOOL_AUTH_STARTED","INBOUND_WEBHOOK_SETTINGS_UPDATED","INSIGHT_ACTION_DISMISSED","INSIGHT_ACTION_EXECUTED","LINK_CONFIGURATION_UPDATED","LOGIN_FAILED","LOGIN_SUCCESS","LOGOUT","MFA_ADMIN_RESET","MFA_DEVICE_CHANGED","MFA_DISABLED","MFA_ENABLED","MFA_REQUIRED_DISABLED","MFA_REQUIRED_ENABLED","MFA_VERIFICATION_FAILED","ORG_SWITCHED_TO_EMPLOYEES_PRO","OUTBOUND_WEBHOOK_CREATED","OUTBOUND_WEBHOOK_DELETED","OUTBOUND_WEBHOOK_UPDATED","OUTBOUND_WEBHOOK_VERIFICATION_KEY_REFRESHED","PERSONAL_ACCESS_TOKEN_GENERATED","PERSONAL_ACCESS_TOKEN_REVOKED","PERSONAL_ACCESS_TOKEN_ROTATED","PRODUCTION_API_KEY_CREATED","PRODUCTION_API_KEY_REGENERATED","PRODUCTION_API_KEY_REVOKED","REGISTERED_USER_CREATED","REGISTERED_USER_DELETED","ROLE_CREATED","ROLE_DELETED","ROLE_UPDATED","SCIM_DEFAULT_ACCESS_UPDATED","SCIM_GROUP_ACCESS_UPDATED","SCIM_GROUP_CREATED","SCIM_GROUP_DELETED","SCIM_GROUP_UPDATED","SCIM_TOKEN_CREATED","SCIM_TOKEN_REVOKED","SCIM_TOOL_ACCESS_REQUEST_APPROVED","SCIM_TOOL_ACCESS_REQUEST_CANCELED","SCIM_TOOL_ACCESS_REQUEST_CREATED","SCIM_TOOL_ACCESS_REQUEST_DENIED","SCIM_TOOL_ACCESS_REQUEST_REVOKED","SCIM_USER_ACCESS_UPDATED","SCIM_USER_DEPROVISIONED","SCIM_USER_PROVISIONED","SCIM_USER_REACTIVATED","SCIM_USER_UPDATED","SECURITY_RULE_CREATED","SECURITY_RULE_DELETED","SECURITY_RULE_UPDATED","SKILL_APPROVED","SKILL_DELETED","SKILL_DISABLED","SKILL_DRAFTED","SKILL_EDITED","SKILL_ENABLED","SKILL_PUBLISHED","SKILL_REJECTED","SKILL_REPUBLISHED","SKILL_RETRIEVED","SKILL_SUBMITTED","SKILL_UNPUBLISHED","SSO_LOGIN_NOT_REQUIRED","SSO_LOGIN_REQUIRED","SSO_LOGIN_REQUIRED_OFF","SSO_LOGIN_REQUIRED_ON","SSO_PROVIDER_CREATED","SSO_PROVIDER_DELETED","SSO_PROVIDER_UPDATED","SYNCED_KNOWLEDGE_SOURCE_CONNECTED","SYNCED_KNOWLEDGE_SOURCE_DISCONNECTED","TEST_API_KEY_CREATED","TEST_API_KEY_DELETED","TEST_API_KEY_REGENERATED","TEST_API_KEY_REVOKED","TOOL_CALL_LOGS_SEARCHED","TOOL_CALL_LOG_DETAIL_VIEWED","TOOL_PACK_CREATED","TOOL_PACK_DELETED","TOOL_PACK_UPDATED","USER_CREATED","USER_DISABLED","USER_ENABLED","USER_INVITATION_ACCEPTED","USER_INVITATION_CANCELLED","USER_INVITED","USER_PASSWORD_RESET","USER_UPDATED"],"title":"ApiV1AuditLogGetParametersEventType"},"AuditLogEventPublic":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the audit log event"},"user_name":{"type":"string","description":"Name of the user who performed the action"},"user_email":{"type":"string","description":"Email of the user who performed the action"},"role":{"type":["string","null"],"description":"Role of the user at the time of the action"},"ip_address":{"type":"string","description":"IP address from which the action was performed"},"event_type":{"type":"string","description":"Type of audit event (e.g., TOOL_PACK_CREATED, USER_UPDATED)"},"event_description":{"type":"string","description":"Human-readable description of the event"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the event occurred"}},"required":["id","user_name","user_email","role","ip_address","event_type","event_description","created_at"],"title":"AuditLogEventPublic"},"PaginatedAuditLogEventPublicList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogEventPublic"}}},"required":["count","results"],"title":"PaginatedAuditLogEventPublicList"},"SharedCredentialGroup":{"type":"object","properties":{"origin_company_id":{"type":["string","null"],"description":"Unique identifier for the company of the Registered User"},"origin_company_name":{"type":["string","null"],"description":"The human readable name of the company of the Registered User"},"custom_groupings":{"type":"object","additionalProperties":{"type":"string"},"description":"Optional identifier / grouping that you can provide to further segment Registered Users"}},"title":"SharedCredentialGroup"},"RegisteredUserPublicResponse":{"type":"object","properties":{"id":{"type":"string"},"origin_user_id":{"type":"string","description":"Unique identifier for Registered User"},"origin_user_name":{"type":"string","description":"The human readable name of Registered User"},"shared_credential_group":{"oneOf":[{"$ref":"#/components/schemas/SharedCredentialGroup"},{"type":"null"}],"description":"Object used to identify which the groupings a Registered User is part of and can share credentials across."},"user_type":{"type":"string","description":"ENUM of `HUMAN` or `SYSTEM`"},"authenticated_connectors":{"type":"array","items":{"type":"string"},"description":"List of connector slugs that the user has authenticated with"},"is_test":{"type":"boolean","description":"Whether this is a test user or production user"}},"required":["id","origin_user_id","origin_user_name","shared_credential_group","user_type","authenticated_connectors","is_test"],"title":"RegisteredUserPublicResponse"},"PaginatedRegisteredUserPublicResponseList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/RegisteredUserPublicResponse"}}},"required":["count","results"],"title":"PaginatedRegisteredUserPublicResponseList"},"RegisteredUserPublicRequestUserType":{"type":"string","enum":["HUMAN","SYSTEM"],"default":"HUMAN","description":"ENUM of `HUMAN` or `SYSTEM`","title":"RegisteredUserPublicRequestUserType"},"RegisteredUserPublicRequest":{"type":"object","properties":{"origin_user_id":{"type":"string","description":"Unique identifier for Registered User"},"origin_user_name":{"type":"string","description":"The human readable name of Registered User"},"shared_credential_group":{"$ref":"#/components/schemas/SharedCredentialGroup","description":"Object used to identify which the groupings a Registered User is part of and can share credentials across."},"user_type":{"$ref":"#/components/schemas/RegisteredUserPublicRequestUserType","default":"HUMAN","description":"ENUM of `HUMAN` or `SYSTEM`"}},"required":["origin_user_id","origin_user_name"],"title":"RegisteredUserPublicRequest"},"PatchedRegisteredUserPublicRequestUserType":{"type":"string","enum":["HUMAN","SYSTEM"],"default":"HUMAN","description":"ENUM of `HUMAN` or `SYSTEM`","title":"PatchedRegisteredUserPublicRequestUserType"},"PatchedRegisteredUserPublicRequest":{"type":"object","properties":{"origin_user_id":{"type":"string","description":"Unique identifier for Registered User"},"origin_user_name":{"type":"string","description":"The human readable name of Registered User"},"shared_credential_group":{"$ref":"#/components/schemas/SharedCredentialGroup","description":"Object used to identify which the groupings a Registered User is part of and can share credentials across."},"user_type":{"$ref":"#/components/schemas/PatchedRegisteredUserPublicRequestUserType","default":"HUMAN","description":"ENUM of `HUMAN` or `SYSTEM`"}},"title":"PatchedRegisteredUserPublicRequest"},"linkToken_createForRegisteredUser_Response_201":{"type":"object","properties":{"link_token":{"type":"string"},"magic_link_url":{"type":"string","description":"URL that opens a hosted authentication page. Share this with the user so they can connect their account in a browser."}},"title":"linkToken_createForRegisteredUser_Response_201"},"ConnectionConnector":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"logo_url":{"type":["string","null"]}},"required":["slug","name","logo_url"],"title":"ConnectionConnector"},"ConnectionOwnerGroup":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"title":"ConnectionOwnerGroup"},"ConnectionOwner":{"type":"object","properties":{"type":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"group":{"$ref":"#/components/schemas/ConnectionOwnerGroup"}},"required":["type","id"],"title":"ConnectionOwner"},"Connection":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"connector":{"$ref":"#/components/schemas/ConnectionConnector"},"organization_id":{"type":"string","format":"uuid"},"auth_option_name":{"type":["string","null"]},"auth_type":{"type":"string"},"auth_scope":{"type":"string","description":"The connection's scope: INDIVIDUAL, SHARED, or ORGANIZATION."},"status":{"type":"string","description":"Connection status: ACTIVE (a token refresh succeeded, or the default for a freshly linked connection) or ERROR (a token refresh failed; the connection needs re-linking)."},"retired_at":{"type":["string","null"],"format":"date-time","description":"When set, the connection is retired (out of service) and surfaced as an issue. Null for live connections."},"owner":{"$ref":"#/components/schemas/ConnectionOwner"},"excluded_registered_users":{"type":"array","items":{"type":"string"},"description":"Registered-user IDs blocked from this SHARED or ORGANIZATION connection. Always empty for INDIVIDUAL connections."},"created_at":{"type":"string","format":"date-time"},"modified_at":{"type":"string","format":"date-time"}},"required":["id","connector","organization_id","auth_option_name","auth_type","auth_scope","status","retired_at","owner","excluded_registered_users","created_at","modified_at"],"description":"Read-only connection shape. Explicit field list — never exposes\nsecret/token material. List item == detail item.","title":"Connection"},"PaginatedConnectionList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/Connection"}}},"required":["count","results"],"title":"PaginatedConnectionList"},"PatchedConnectionUpdate":{"type":"object","properties":{"excluded_registered_users":{"type":"array","items":{"type":"string"},"description":"Full replacement list of registered user IDs to block from this SHARED or ORGANIZATION connection. Send [] to clear all exclusions."}},"description":"Request body for PATCH /connections/{id}/. Replaces the full list of\nregistered users excluded from a SHARED or ORGANIZATION connection.","title":"PatchedConnectionUpdate"},"ConnectorPublicAuthScope":{"type":"string","enum":["INDIVIDUAL","SHARED","ORGANIZATION"],"description":"How credentials are shared for this connector.\n\n- `INDIVIDUAL`: each registered user authenticates with their own credential\n- `SHARED`: users in the same registered_company share one credential\n- `ORGANIZATION`: one credential is used for the whole organization","title":"ConnectorPublicAuthScope"},"ConnectorPublic":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"source_url":{"type":["string","null"]},"logo_url":{"type":"string"},"categories":{"type":"array","items":{"description":"Any type"}},"auth_scope":{"$ref":"#/components/schemas/ConnectorPublicAuthScope","description":"How credentials are shared for this connector.\n\n- `INDIVIDUAL`: each registered user authenticates with their own credential\n- `SHARED`: users in the same registered_company share one credential\n- `ORGANIZATION`: one credential is used for the whole organization"},"tools":{"type":"array","items":{"$ref":"#/components/schemas/ConnectorTool"}},"connector_id":{"type":"string","format":"uuid","description":"DEPRECATED — alias for the connector UUID. Prefer `slug` as the primary identifier. Retained for backward compatibility."}},"required":["slug","name","source_url","logo_url","categories","auth_scope","tools","connector_id"],"description":"Public tool-pack-scoped connector shape.\n\nUsed across public endpoints that return a connector attached to a tool\npack: both the nested `connectors[]` in `GET /api/v1/tool-packs/{id}/`\nand the items in `/api/v1/tool-packs/{id}/connectors/` (GET/PATCH/PUT).\nSee the \"Consolidating connector response\" tech-debt spec (column E).","title":"ConnectorPublic"},"ToolPackPublic":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"ID of the Tool Pack"},"name":{"type":"string","maxLength":255,"description":"Name of the Tool Pack"},"description":{"type":"string","description":"Description of the Tool Pack"},"connectors":{"type":"array","items":{"$ref":"#/components/schemas/ConnectorPublic"},"description":"Connectors enabled with the Tool Pack"}},"required":["id","name","description","connectors"],"title":"ToolPackPublic"},"PaginatedToolPackPublicList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ToolPackPublic"}}},"required":["count","results"],"title":"PaginatedToolPackPublicList"},"ToolPackConnectorInputAuthScope":{"type":"string","enum":["INDIVIDUAL","SHARED","ORGANIZATION"],"default":"INDIVIDUAL","description":"How credentials are shared for this connector.\n\n- `INDIVIDUAL`: each registered user authenticates with their own credential\n- `SHARED`: users in the same registered_company share one credential\n- `ORGANIZATION`: one credential is used for the whole organization","title":"ToolPackConnectorInputAuthScope"},"ToolPackConnectorInput":{"type":"object","properties":{"slug":{"type":"string","description":"Connector slug — primary identifier."},"connector_id":{"type":"string","format":"uuid","description":"DEPRECATED — prefer `slug`. Retained for backward compatibility."},"auth_scope":{"$ref":"#/components/schemas/ToolPackConnectorInputAuthScope","default":"INDIVIDUAL","description":"How credentials are shared for this connector.\n\n- `INDIVIDUAL`: each registered user authenticates with their own credential\n- `SHARED`: users in the same registered_company share one credential\n- `ORGANIZATION`: one credential is used for the whole organization"},"tool_names":{"type":"array","items":{"type":"string"},"description":"Tool names to enable for this connector. Omit to enable all tools."}},"description":"Shared validation for connector identifier inputs.\n\nAt least one identifier must be provided. When both are set, `slug` wins\nand the deprecated `connector_id` is discarded.","title":"ToolPackConnectorInput"},"ToolPackPublicWrite":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"description":{"type":"string"},"connectors":{"type":"array","items":{"$ref":"#/components/schemas/ToolPackConnectorInput"},"description":"Full-replace list of connectors. Any connector not in this array is detached from the tool pack. For incremental add/remove, use the `/tool-packs/{id}/connectors/` sub-resource endpoints."}},"required":["name","description"],"title":"ToolPackPublicWrite"},"PatchedToolPackPublicWrite":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"description":{"type":"string"},"connectors":{"type":"array","items":{"$ref":"#/components/schemas/ToolPackConnectorInput"},"description":"Full-replace list of connectors. Any connector not in this array is detached from the tool pack. For incremental add/remove, use the `/tool-packs/{id}/connectors/` sub-resource endpoints."}},"title":"PatchedToolPackPublicWrite"},"ToolPackConnectorBulkInputAuthScope":{"type":"string","enum":["INDIVIDUAL","SHARED","ORGANIZATION"],"description":"Authentication scope. INDIVIDUAL: each user authenticates separately. SHARED: users in the same registered_company share one credential. Defaults to INDIVIDUAL when creating a new connector.","title":"ToolPackConnectorBulkInputAuthScope"},"ToolPackConnectorBulkInput":{"type":"object","properties":{"slug":{"type":"string","description":"Connector slug — primary identifier."},"connector_id":{"type":"string","format":"uuid","description":"DEPRECATED — prefer `slug`. Retained for backward compatibility."},"auth_scope":{"$ref":"#/components/schemas/ToolPackConnectorBulkInputAuthScope","description":"Authentication scope. INDIVIDUAL: each user authenticates separately. SHARED: users in the same registered_company share one credential. Defaults to INDIVIDUAL when creating a new connector."},"tool_names":{"type":"array","items":{"type":"string"},"description":"Tool names to enable on this connector.\n- Omitted (new connector): all tools are enabled.\n- Omitted (existing connector, PATCH): the connector's tools are left unchanged.\n- `[]` (empty list): the connector is removed from the tool pack.\n- Otherwise: exactly these tools are enabled."}},"description":"One item in a tool pack connector update request.","title":"ToolPackConnectorBulkInput"},"ToolDescriptionOverride":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"connector_slug":{"type":"string"},"tool_name":{"type":"string","description":"Name of the tool being overridden"},"description":{"type":"string","description":"Custom description for the tool"},"defined_at":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"modified_at":{"type":"string","format":"date-time"}},"required":["id","connector_slug","tool_name","description","defined_at","created_at","modified_at"],"description":"Response serializer for tool-level description overrides.\n\nIncludes a computed `defined_at` field (CONNECTOR or TOOL_PACK) indicating\nwhether the override originates from the connector level or tool pack level.","title":"ToolDescriptionOverride"},"PaginatedToolDescriptionOverrideList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"]},"previous":{"type":["string","null"]},"results":{"type":"array","items":{"$ref":"#/components/schemas/ToolDescriptionOverride"}}},"required":["count","next","previous","results"],"title":"PaginatedToolDescriptionOverrideList"},"BulkToolDescriptionOverrideInput":{"type":"object","properties":{"connector_slug":{"type":"string","maxLength":255},"tool_name":{"type":"string","maxLength":255},"description":{"type":["string","null"],"maxLength":10000}},"required":["connector_slug","tool_name","description"],"description":"Input serializer for each item in a bulk PATCH request.","title":"BulkToolDescriptionOverrideInput"},"PaginatedToolPackToolDescriptionOverrideList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"]},"previous":{"type":["string","null"]},"results":{"type":"array","items":{"$ref":"#/components/schemas/ToolDescriptionOverride"}}},"required":["count","next","previous","results"],"title":"PaginatedToolPackToolDescriptionOverrideList"},"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostParametersFormat":{"type":"string","enum":["event-stream","json"],"title":"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostParametersFormat"},"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostRequestBodyContentApplicationJsonSchemaMethod":{"type":"string","enum":["initialize","tools/list","tools/call"],"title":"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostRequestBodyContentApplicationJsonSchemaMethod"},"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostRequestBodyContentApplicationJsonSchemaParams":{"type":"object","properties":{},"title":"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostRequestBodyContentApplicationJsonSchemaParams"},"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostResponsesContentApplicationJsonSchemaResult":{"type":"object","properties":{},"title":"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostResponsesContentApplicationJsonSchemaResult"},"mcp_endpointPost_Response_200":{"type":"object","properties":{"jsonrpc":{"type":"string"},"id":{"type":"integer"},"result":{"$ref":"#/components/schemas/ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdMcpPostResponsesContentApplicationJsonSchemaResult"}},"title":"mcp_endpointPost_Response_200"},"ToolSearchRequest":{"type":"object","properties":{"intent":{"type":"string","maxLength":500,"description":"User's intent or what they want to accomplish"},"connector_slugs":{"type":"array","items":{"type":"string"},"default":[],"description":"Optional list of connector slugs to filter the search"},"max_results":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"Maximum number of results to return"}},"required":["intent"],"title":"ToolSearchRequest"},"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdSearchPostResponsesContentApplicationJsonSchemaToolsItemsInputSchema":{"type":"object","properties":{},"title":"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdSearchPostResponsesContentApplicationJsonSchemaToolsItemsInputSchema"},"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdSearchPostResponsesContentApplicationJsonSchemaToolsItems":{"type":"object","properties":{"name":{"type":"string"},"fully_qualified_name":{"type":"string"},"human_name":{"type":"string"},"description":{"type":"string"},"input_schema":{"$ref":"#/components/schemas/ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdSearchPostResponsesContentApplicationJsonSchemaToolsItemsInputSchema"},"relevance_score":{"type":"number","format":"double"},"reasoning":{"type":"string"}},"title":"ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdSearchPostResponsesContentApplicationJsonSchemaToolsItems"},"toolSearch_searchTools_Response_200":{"type":"object","properties":{"tools":{"type":"array","items":{"$ref":"#/components/schemas/ApiV1ToolPacksToolPackIdRegisteredUsersRegisteredUserIdSearchPostResponsesContentApplicationJsonSchemaToolsItems"}},"total_results":{"type":"integer"},"intent":{"type":"string"}},"title":"toolSearch_searchTools_Response_200"},"StandardEntityRuleResponseOutboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"StandardEntityRuleResponseOutboundAction"},"StandardEntityRuleResponse":{"type":"object","properties":{"entity_type":{"type":"string"},"region":{"type":"string"},"description":{"type":"string"},"detection_method":{"type":"string"},"is_active":{"type":"boolean"},"outbound_action":{"oneOf":[{"$ref":"#/components/schemas/StandardEntityRuleResponseOutboundAction"},{"type":"null"}]},"defined_at":{"type":"string"}},"required":["entity_type","region","description","detection_method","is_active","outbound_action","defined_at"],"description":"Standard entity rule for an organization.","title":"StandardEntityRuleResponse"},"PaginatedStandardEntityRuleResponseList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/StandardEntityRuleResponse"}}},"required":["count","results"],"title":"PaginatedStandardEntityRuleResponseList"},"StandardEntityRulePutInputInboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"StandardEntityRulePutInputInboundAction"},"StandardEntityRulePutInputOutboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"StandardEntityRulePutInputOutboundAction"},"StandardEntityRulePutInput":{"type":"object","properties":{"is_active":{"type":"boolean"},"inbound_action":{"$ref":"#/components/schemas/StandardEntityRulePutInputInboundAction"},"outbound_action":{"$ref":"#/components/schemas/StandardEntityRulePutInputOutboundAction"}},"required":["is_active","inbound_action","outbound_action"],"description":"Input serializer for PUT /standard-entity-rules/<entity_type>/. All fields required.","title":"StandardEntityRulePutInput"},"PublicCombinedSecurityRule":{"type":"object","properties":{"entity_type":{"type":"string"},"region":{"type":"string"},"description":{"type":"string"},"detection_method":{"type":"string"},"is_active":{"type":"boolean"},"outbound_action":{"type":"string"},"defined_at":{"type":"string"},"org_is_active":{"type":"boolean"},"org_outbound_action":{"type":"string"}},"required":["entity_type","description","detection_method","is_active","outbound_action","defined_at"],"description":"Standard entity rule with effective configuration for a tool pack.","title":"PublicCombinedSecurityRule"},"PaginatedPublicCombinedSecurityRuleList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/PublicCombinedSecurityRule"}}},"required":["count","results"],"title":"PaginatedPublicCombinedSecurityRuleList"},"StandardEntityOverridePutInputInboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"StandardEntityOverridePutInputInboundAction"},"StandardEntityOverridePutInputOutboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"StandardEntityOverridePutInputOutboundAction"},"StandardEntityOverridePutInput":{"type":"object","properties":{"is_active":{"type":"boolean"},"inbound_action":{"$ref":"#/components/schemas/StandardEntityOverridePutInputInboundAction"},"outbound_action":{"$ref":"#/components/schemas/StandardEntityOverridePutInputOutboundAction"}},"required":["is_active","inbound_action","outbound_action"],"description":"Input serializer for PUT /tool-packs/<id>/standard-entity-rules/<entity_type>/.","title":"StandardEntityOverridePutInput"},"CustomRegexRuleResponseOutboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"CustomRegexRuleResponseOutboundAction"},"CustomRegexRuleResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"regex":{"type":"string"},"score":{"type":"number","format":"double"},"context_keywords":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"modified_at":{"type":"string","format":"date-time"},"outbound_action":{"oneOf":[{"$ref":"#/components/schemas/CustomRegexRuleResponseOutboundAction"},{"type":"null"}]},"defined_at":{"type":"string"}},"required":["id","name","regex","score","context_keywords","is_active","created_at","modified_at","outbound_action","defined_at"],"description":"Custom regex rule for an organization.","title":"CustomRegexRuleResponse"},"PaginatedCustomRegexRuleResponseList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/CustomRegexRuleResponse"}}},"required":["count","results"],"title":"PaginatedCustomRegexRuleResponseList"},"CustomRegexRuleCreateInputInboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"default":"REDACT","title":"CustomRegexRuleCreateInputInboundAction"},"CustomRegexRuleCreateInputOutboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"default":"REDACT","title":"CustomRegexRuleCreateInputOutboundAction"},"CustomRegexRuleCreateInput":{"type":"object","properties":{"name":{"type":"string"},"regex":{"type":"string"},"score":{"type":"number","format":"double","default":0.5},"inbound_action":{"$ref":"#/components/schemas/CustomRegexRuleCreateInputInboundAction","default":"REDACT"},"outbound_action":{"$ref":"#/components/schemas/CustomRegexRuleCreateInputOutboundAction","default":"REDACT"},"context_keywords":{"type":"array","items":{"type":"string"},"default":[]}},"required":["name","regex"],"description":"Shared field validators for create and update input serializers.\n\nThe presidio validate_* functions raise RequestValidationError (a DRF APIException),\nwhich bypasses the serializer's field error mapping. We catch and re-raise as\nserializers.ValidationError so errors are attributed to the correct field.","title":"CustomRegexRuleCreateInput"},"PatchedCustomRegexRuleUpdateInputInboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"PatchedCustomRegexRuleUpdateInputInboundAction"},"PatchedCustomRegexRuleUpdateInputOutboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"PatchedCustomRegexRuleUpdateInputOutboundAction"},"PatchedCustomRegexRuleUpdateInput":{"type":"object","properties":{"name":{"type":"string"},"regex":{"type":"string"},"score":{"type":"number","format":"double"},"inbound_action":{"$ref":"#/components/schemas/PatchedCustomRegexRuleUpdateInputInboundAction"},"outbound_action":{"$ref":"#/components/schemas/PatchedCustomRegexRuleUpdateInputOutboundAction"},"context_keywords":{"type":"array","items":{"type":"string"}},"is_active":{"type":"boolean"}},"description":"Shared field validators for create and update input serializers.\n\nThe presidio validate_* functions raise RequestValidationError (a DRF APIException),\nwhich bypasses the serializer's field error mapping. We catch and re-raise as\nserializers.ValidationError so errors are attributed to the correct field.","title":"PatchedCustomRegexRuleUpdateInput"},"PublicCombinedCustomRegexRule":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"regex":{"type":"string"},"score":{"type":"number","format":"double"},"context_keywords":{"description":"Any type"},"is_active":{"type":"boolean"},"outbound_action":{"type":"string"},"defined_at":{"type":"string"}},"required":["id","name","regex","score","context_keywords","is_active","outbound_action","defined_at"],"description":"Custom regex rule with effective configuration for a tool pack.","title":"PublicCombinedCustomRegexRule"},"PaginatedPublicCombinedCustomRegexRuleList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/PublicCombinedCustomRegexRule"}}},"required":["count","results"],"title":"PaginatedPublicCombinedCustomRegexRuleList"},"CustomRegexOverrideCreateInputInboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"CustomRegexOverrideCreateInputInboundAction"},"CustomRegexOverrideCreateInputOutboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"CustomRegexOverrideCreateInputOutboundAction"},"CustomRegexOverrideCreateInput":{"type":"object","properties":{"name":{"type":"string"},"regex":{"type":"string"},"score":{"type":"number","format":"double"},"context_keywords":{"description":"Any type"},"is_active":{"type":"boolean"},"inbound_action":{"$ref":"#/components/schemas/CustomRegexOverrideCreateInputInboundAction"},"outbound_action":{"$ref":"#/components/schemas/CustomRegexOverrideCreateInputOutboundAction"}},"required":["name","regex","score","context_keywords","is_active","inbound_action","outbound_action"],"description":"Input serializer for POST /tool-packs/<id>/custom-regex-rules/.","title":"CustomRegexOverrideCreateInput"},"PatchedToolPackCustomRegexOverrideInboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"PatchedToolPackCustomRegexOverrideInboundAction"},"PatchedToolPackCustomRegexOverrideOutboundAction":{"type":"string","enum":["BLOCK","REDACT","LOG","NONE"],"title":"PatchedToolPackCustomRegexOverrideOutboundAction"},"PatchedToolPackCustomRegexOverride":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","maxLength":100},"is_active":{"type":"boolean"},"regex":{"type":"string"},"score":{"type":"number","format":"double"},"context_keywords":{"description":"Any type"},"inbound_action":{"$ref":"#/components/schemas/PatchedToolPackCustomRegexOverrideInboundAction"},"outbound_action":{"$ref":"#/components/schemas/PatchedToolPackCustomRegexOverrideOutboundAction"},"created_at":{"type":"string","format":"date-time"},"modified_at":{"type":"string","format":"date-time"}},"description":"Rejects requests that explicitly set defined_at to ORGANIZATION in tool pack endpoints.","title":"PatchedToolPackCustomRegexOverride"},"UsageTotal":{"type":"object","properties":{"total_credits_used":{"type":"integer"},"total_call_count":{"type":"integer"},"last_updated_at":{"type":["string","null"],"format":"date-time","description":"When usage data was last refreshed. Usage is aggregated periodically, so the most recent tool calls may not be included yet."}},"required":["total_credits_used","total_call_count","last_updated_at"],"title":"UsageTotal"},"RegisteredUserUsage":{"type":"object","properties":{"registered_user_id":{"type":"string","format":"uuid"},"credits_used":{"type":"integer"},"call_count":{"type":"integer"}},"required":["registered_user_id","credits_used","call_count"],"title":"RegisteredUserUsage"},"PaginatedRegisteredUserUsageList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/RegisteredUserUsage"}},"last_updated_at":{"type":["string","null"],"format":"date-time","description":"When usage data was last refreshed. Usage is aggregated periodically, so the most recent tool calls may not be included yet."}},"required":["count","results"],"title":"PaginatedRegisteredUserUsageList"},"ToolBreakdown":{"type":"object","properties":{"connector":{"type":["string","null"]},"connector_id":{"type":["string","null"],"format":"uuid"},"tool_name":{"type":"string"},"credit_type":{"type":"string"},"credits_used":{"type":"integer"},"call_count":{"type":"integer"}},"required":["connector","connector_id","tool_name","credit_type","credits_used","call_count"],"title":"ToolBreakdown"},"RegisteredUserUsageDetail":{"type":"object","properties":{"registered_user_id":{"type":"string","format":"uuid"},"total_credits_used":{"type":"integer"},"total_call_count":{"type":"integer"},"tool_breakdown":{"type":"array","items":{"$ref":"#/components/schemas/ToolBreakdown"}},"last_updated_at":{"type":["string","null"],"format":"date-time","description":"When usage data was last refreshed. Usage is aggregated periodically, so the most recent tool calls may not be included yet."}},"required":["registered_user_id","total_credits_used","total_call_count","tool_breakdown","last_updated_at"],"title":"RegisteredUserUsageDetail"},"ToolUsage":{"type":"object","properties":{"connector":{"type":["string","null"]},"tool_name":{"type":"string"},"credits_used":{"type":"integer"},"call_count":{"type":"integer"}},"required":["connector","tool_name","credits_used","call_count"],"title":"ToolUsage"},"PaginatedToolUsageList":{"type":"object","properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ToolUsage"}},"last_updated_at":{"type":["string","null"],"format":"date-time","description":"When usage data was last refreshed. Usage is aggregated periodically, so the most recent tool calls may not be included yet."}},"required":["count","results"],"title":"PaginatedToolUsageList"},"FileTransferReserve":{"type":"object","properties":{"filename":{"type":"string","maxLength":255,"description":"Name the file will carry into the connector."},"content_type":{"type":"string","maxLength":255,"default":"application/octet-stream","description":"MIME type of the bytes; defaults to application/octet-stream."},"size_bytes":{"type":"integer","minimum":1,"maximum":104857600,"description":"Optional. Rejects a file over the limit before you send any bytes; the upload enforces the limit regardless."}},"required":["filename"],"description":"Metadata for reserving an upload, validated before any bytes move.","title":"FileTransferReserve"},"FileTransferUploadTarget":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Where to send the file's bytes."},"method":{"type":"string","description":"HTTP method to use, always PUT."},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Headers to send with the upload. Authorization is a placeholder; send your own Access Key."}},"required":["url","method","headers"],"title":"FileTransferUploadTarget"},"FileTransferReservation":{"type":"object","properties":{"file_reference":{"type":"string","description":"Pass this as the file_reference argument of an upload tool once the bytes are uploaded."},"upload":{"$ref":"#/components/schemas/FileTransferUploadTarget","description":"Where and how to send the file's bytes."},"max_size_bytes":{"type":"integer","description":"Largest file this upload accepts, in bytes."},"expires_at":{"type":"string","format":"date-time","description":"When the upload URL and the file reference both stop working."}},"required":["file_reference","upload","max_size_bytes","expires_at"],"title":"FileTransferReservation"},"FileTransferUploadResult":{"type":"object","properties":{"file_reference":{"type":"string","description":"Pass this as the file_reference argument of an upload tool."},"size_bytes":{"type":"integer","description":"Bytes received and stored."},"expires_at":{"type":"string","format":"date-time","description":"When the file reference stops working."}},"required":["file_reference","size_bytes","expires_at"],"title":"FileTransferUploadResult"},"AgentSignupOrganization":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","description":"Generated name; rename it after claiming."}},"required":["id","name"],"title":"AgentSignupOrganization"},"AgentSignupResponse":{"type":"object","properties":{"claim_url":{"type":"string","format":"uri","description":"Link a human opens to take ownership of the organization."},"claim_expires_at":{"type":"string","format":"date-time","description":"After this the link stops working; call `POST /agent/claim/` for a new one."},"api_key":{"type":"string","description":"Raw access key with `runtime:all` and `management:all`. Returned only here."},"organization":{"$ref":"#/components/schemas/AgentSignupOrganization"},"tool_pack_id":{"type":"string","format":"uuid","description":"Default tool pack with a curated starter set of connectors; use it as `{tool_pack_id}` in the MCP URL."},"registered_user_id":{"type":"string","format":"uuid","description":"Production registered user named `Agent`; use it as `{registered_user_id}` in the MCP URL."},"next_step":{"type":"string","description":"One-line instruction for what to run next, with a link to the agent quickstart guide."}},"required":["claim_url","claim_expires_at","api_key","organization","tool_pack_id","registered_user_id","next_step"],"title":"AgentSignupResponse"},"AgentClaimResponse":{"type":"object","properties":{"claim_url":{"type":"string","format":"uri","description":"Link a human opens to take ownership of the organization."},"claim_expires_at":{"type":"string","format":"date-time","description":"After this the link stops working; call `POST /agent/claim/` for a new one."}},"required":["claim_url","claim_expires_at"],"title":"AgentClaimResponse"},"AgentClaimConflictError":{"type":"string","enum":["organization_already_claimed"],"description":"Set once a human has claimed the organization.","title":"AgentClaimConflictError"},"AgentClaimConflict":{"type":"object","properties":{"error":{"$ref":"#/components/schemas/AgentClaimConflictError","description":"Set once a human has claimed the organization."}},"required":["error"],"title":"AgentClaimConflict"},"ApiCallLogPublic":{"type":"object","properties":{"id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"started_at":{"type":["string","null"],"format":"date-time"},"ended_at":{"type":["string","null"],"format":"date-time"},"request_id":{"type":["string","null"]},"toolcall_id":{"type":["string","null"]},"connector_id":{"type":["string","null"]},"tool_name":{"type":["string","null"]},"method":{"type":["string","null"]},"url":{"type":["string","null"]},"request_body":{"type":["string","null"]},"request_headers":{"type":["string","null"]},"response_body":{"type":["string","null"]},"response_headers":{"type":["string","null"]},"response_status":{"type":["integer","null"]}},"required":["id","created_at"],"description":"A single API-request log record (one outbound call made during a tool call).\n\nStrict subset of the internal API-log payload (see ``LogDocument.to_api_dict``);\nomits the hydrated connector object and exposes its raw ID instead.","title":"ApiCallLogPublic"},"ApiCallLogPage":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ApiCallLogPublic"}},"next_cursor":{"type":["string","null"]},"has_more":{"type":"boolean"}},"required":["results","next_cursor","has_more"],"description":"Cursor-paginated page of API-call logs.","title":"ApiCallLogPage"},"ToolCallLogPublic":{"type":"object","properties":{"id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"started_at":{"type":["string","null"],"format":"date-time"},"ended_at":{"type":["string","null"],"format":"date-time"},"registered_user_id":{"type":["string","null"]},"connector_id":{"type":["string","null"]},"connector_source":{"type":["string","null"]},"tool_pack_id":{"type":["string","null"]},"tool_name":{"type":["string","null"]},"tool_args":{"type":["string","null"]},"result":{"type":["string","null"]},"headers":{"type":["string","null"]},"status":{"type":["string","null"]},"client_trace_id":{"type":["string","null"]},"turn_id":{"type":["string","null"]}},"required":["id","created_at"],"description":"A single tool-call log record.\n\nStrict subset of the internal toolcall payload (see\n``ToolcallDocument.to_api_dict``); omits the hydrated connector/tool_pack/\nregistered_user objects and exposes their raw IDs instead.","title":"ToolCallLogPublic"},"ToolCallLogPage":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/ToolCallLogPublic"}},"next_cursor":{"type":["string","null"]},"has_more":{"type":"boolean"}},"required":["results","next_cursor","has_more"],"description":"Cursor-paginated page of tool-call logs.","title":"ToolCallLogPage"}},"securitySchemes":{"tokenAuth":{"type":"http","scheme":"bearer","description":"Token-based authentication with required prefix \"Bearer\""}}}}