{"openapi":"3.1.0","info":{"title":"Oogway - BE Router","version":"0.1.0"},"paths":{"/":{"get":{"summary":"Health Check","operationId":"health_check__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeathCheckResponse"}}}}}}},"/router/v1/integrations/slack/webhook/interaction":{"post":{"tags":["integrations"],"summary":"Slack Success Callback","operationId":"slack_success_callback_router_v1_integrations_slack_webhook_interaction_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Slack Success Callback Router V1 Integrations Slack Webhook Interaction Post"}}}}}}},"/router/v1/integrations/slack/webhook/event/":{"post":{"tags":["integrations"],"summary":"Slack Event Handler","operationId":"slack_event_handler_router_v1_integrations_slack_webhook_event__post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Slack Event Handler Router V1 Integrations Slack Webhook Event  Post"}}}}}}},"/router/v1/integrations/slack/webhook/options":{"post":{"tags":["integrations"],"summary":"Slack Option Handler","operationId":"slack_option_handler_router_v1_integrations_slack_webhook_options_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Slack Option Handler Router V1 Integrations Slack Webhook Options Post"}}}}}}},"/router/v1/integrations/destinations/{destination}/slack/webhook/interaction":{"post":{"tags":["integrations"],"summary":"Destination Slack Interaction Callback","operationId":"destination_slack_interaction_callback_router_v1_integrations_destinations__destination__slack_webhook_interaction_post","parameters":[{"name":"destination","in":"path","required":true,"schema":{"type":"string","title":"Destination"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Destination Slack Interaction Callback Router V1 Integrations Destinations  Destination  Slack Webhook Interaction Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/integrations/destinations/{destination}/slack/webhook/event/":{"post":{"tags":["integrations"],"summary":"Destination Slack Event Handler","operationId":"destination_slack_event_handler_router_v1_integrations_destinations__destination__slack_webhook_event__post","parameters":[{"name":"destination","in":"path","required":true,"schema":{"type":"string","title":"Destination"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Destination Slack Event Handler Router V1 Integrations Destinations  Destination  Slack Webhook Event  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/integrations/destinations/{destination}/slack/webhook/options":{"post":{"tags":["integrations"],"summary":"Destination Slack Option Handler","operationId":"destination_slack_option_handler_router_v1_integrations_destinations__destination__slack_webhook_options_post","parameters":[{"name":"destination","in":"path","required":true,"schema":{"type":"string","title":"Destination"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Destination Slack Option Handler Router V1 Integrations Destinations  Destination  Slack Webhook Options Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/integrations/destinations/{destination}/slack/oauth_redirect":{"get":{"tags":["integrations"],"summary":"Destination Slack Oauth Redirect","description":"Handle Slack OAuth redirect callback for dynamic destinations.\nThis endpoint receives OAuth callbacks from Slack after app installation/authorization\nand forwards them to all clusters of the specified destination.\n\nSince we don't know which cluster the OAuth state belongs to, we fan out to all clusters\nand return the first successful response.","operationId":"destination_slack_oauth_redirect_router_v1_integrations_destinations__destination__slack_oauth_redirect_get","parameters":[{"name":"destination","in":"path","required":true,"schema":{"type":"string","title":"Destination"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Destination Slack Oauth Redirect Router V1 Integrations Destinations  Destination  Slack Oauth Redirect Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/integrations/ms_teams/webhook/messaging":{"post":{"tags":["integrations"],"summary":"Ms Teams Messaging Handler","description":"Handle MS Teams messaging endpoint.\nThis endpoint receives all activities from Microsoft Teams and validates them\nusing Bot Framework authentication before forwarding to the appropriate cluster.","operationId":"ms_teams_messaging_handler_router_v1_integrations_ms_teams_webhook_messaging_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Ms Teams Messaging Handler Router V1 Integrations Ms Teams Webhook Messaging Post"}}}}}}},"/router/v1/cluster_emails/email/{email_hash}":{"get":{"tags":["cluster_email"],"summary":"Get Cluster Client For Email Hash","operationId":"get_cluster_client_for_email_hash_router_v1_cluster_emails_email__email_hash__get","parameters":[{"name":"email_hash","in":"path","required":true,"schema":{"type":"string","title":"Email Hash"}},{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterEmailDomain"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/cluster_emails/bulk":{"post":{"tags":["cluster_email"],"summary":"Bulk Add Cluster Emails","operationId":"bulk_add_cluster_emails_router_v1_cluster_emails_bulk_post","parameters":[{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Add Cluster Emails Router V1 Cluster Emails Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["cluster_email"],"summary":"Bulk Delete Cluster Emails","operationId":"bulk_delete_cluster_emails_router_v1_cluster_emails_bulk_delete","parameters":[{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Delete Cluster Emails Router V1 Cluster Emails Bulk Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/cluster_clients/client/{client_id}":{"get":{"tags":["cluster_client"],"summary":"Get Cluster Client For Client Id","operationId":"get_cluster_client_for_client_id_router_v1_cluster_clients_client__client_id__get","parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","title":"Client Id"}},{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClusterClientDomain"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/cluster_clients/bulk":{"post":{"tags":["cluster_client"],"summary":"Bulk Add Cluster Clients","operationId":"bulk_add_cluster_clients_router_v1_cluster_clients_bulk_post","parameters":[{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterClientCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Add Cluster Clients Router V1 Cluster Clients Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["cluster_client"],"summary":"Bulk Delete Cluster Clients","description":"Bulk-delete OAuth client-ID → cluster mappings.\n\nCalled during workspace offboarding to remove all ClusterClientDB rows\nthat were registered for a workspace's external-integration credentials.","operationId":"bulk_delete_cluster_clients_router_v1_cluster_clients_bulk_delete","parameters":[{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterClientCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Delete Cluster Clients Router V1 Cluster Clients Bulk Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/cluster_tokens/bulk/creator":{"post":{"tags":["cluster_token"],"summary":"Bulk Add Creator Tokens","operationId":"bulk_add_creator_tokens_router_v1_cluster_tokens_bulk_creator_post","parameters":[{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterInviteTokenCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Add Creator Tokens Router V1 Cluster Tokens Bulk Creator Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["cluster_token"],"summary":"Bulk Delete Creator Tokens","description":"Bulk-delete creator invite-token → cluster mappings.\n\nCalled during workspace offboarding to remove all ClusterCreatorInviteTokenDB\nrows that were registered for a workspace's invite tokens.","operationId":"bulk_delete_creator_tokens_router_v1_cluster_tokens_bulk_creator_delete","parameters":[{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterInviteTokenCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Delete Creator Tokens Router V1 Cluster Tokens Bulk Creator Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/cluster_tokens/bulk/counter_party":{"post":{"tags":["cluster_token"],"summary":"Bulk Add Cp Tokens","operationId":"bulk_add_cp_tokens_router_v1_cluster_tokens_bulk_counter_party_post","parameters":[{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterInviteTokenCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Add Cp Tokens Router V1 Cluster Tokens Bulk Counter Party Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["cluster_token"],"summary":"Bulk Delete Cp Tokens","description":"Bulk-delete counterparty invite-token → cluster mappings.\n\nCalled during workspace offboarding to remove all ClusterCPInviteTokenDB\nrows that were registered for a workspace's counterparty invite tokens.","operationId":"bulk_delete_cp_tokens_router_v1_cluster_tokens_bulk_counter_party_delete","parameters":[{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterInviteTokenCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Delete Cp Tokens Router V1 Cluster Tokens Bulk Counter Party Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/clusters/":{"get":{"tags":["clusters"],"summary":"List Clusters","description":"Returns the list of clusters available to the router.","operationId":"list_clusters_router_v1_clusters__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ClusterInfoDomain"},"type":"array","title":"Response List Clusters Router V1 Clusters  Get"}}}}}}},"/router/v1/clusters/{cluster_id}/workspace-data":{"delete":{"tags":["clusters"],"summary":"Delete Workspace Data","description":"Delete Oogway data for one workspace in a single API call.\n\nThe request body carries the workspace-specific identifiers to remove\n(email hashes, slack team IDs, external integration IDs, OAuth client\nIDs, invite tokens, and device-grant user codes).  Only the supplied\nrows that belong to *cluster_id* are deleted, using the same\ncluster-ownership guard and cluster-scoped DELETE pattern as the PR\n#158 bulk-DELETE endpoints.\n\nAll deletions run in one database transaction.  Non-existent identifiers\nare silently ignored (idempotent).\n\nReturns:\n    ``True`` on success.","operationId":"delete_workspace_data_router_v1_clusters__cluster_id__workspace_data_delete","parameters":[{"name":"cluster_id","in":"path","required":true,"schema":{"type":"string","title":"Cluster Id"}},{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWorkspaceDataRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Delete Workspace Data Router V1 Clusters  Cluster Id  Workspace Data Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/trial/signup":{"post":{"tags":["trial"],"summary":"Signup Via Email","operationId":"signup_via_email_router_v1_trial_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrialSignupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrialSignupDomainModel"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/trial/signup/complete":{"post":{"tags":["trial"],"summary":"Signup Complete","operationId":"signup_complete_router_v1_trial_signup_complete_post","parameters":[{"name":"x-forwarded-for","in":"header","required":false,"schema":{"type":"string","title":"X-Forwarded-For"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrialOrgSignUpRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/trial/signup/oauth":{"get":{"tags":["trial"],"summary":"Oauth Trial Signup","operationId":"oauth_trial_signup_router_v1_trial_signup_oauth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/router/v1/trial/signup/oauth/callback":{"get":{"tags":["trial"],"summary":"Oauth Trial Signup Callback","operationId":"oauth_trial_signup_callback_router_v1_trial_signup_oauth_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/postmark/inbound/blackhole":{"post":{"tags":["postmark"],"summary":"Inbound Email Blackhole","operationId":"inbound_email_blackhole_router_v1_postmark_inbound_blackhole_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/router/v1/sfdc/":{"post":{"tags":["sfdc"],"summary":"Decode Signed Request","operationId":"decode_signed_request_router_v1_sfdc__post","parameters":[{"name":"index_url_override","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Index Url Override"}},{"name":"user-agent","in":"header","required":false,"schema":{"type":"string","title":"User-Agent"}},{"name":"x-forwarded-for","in":"header","required":false,"schema":{"type":"string","title":"X-Forwarded-For"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_decode_signed_request_router_v1_sfdc__post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sfdc"],"summary":"Get Canvas App","operationId":"get_canvas_app_router_v1_sfdc__get","parameters":[{"name":"index_url_override","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Index Url Override"}},{"name":"user-agent","in":"header","required":false,"schema":{"type":"string","title":"User-Agent"}},{"name":"x-forwarded-for","in":"header","required":false,"schema":{"type":"string","title":"X-Forwarded-For"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/hubspot/iframe":{"get":{"tags":["hubspot"],"summary":"Get App","description":"Handle HubSpot iframe requests for embedded applications and redirections.\n\nThis endpoint processes HubSpot iframe requests, handling both direct application\nrendering and redirects to contract pages. It extracts credentials and payload\nfrom query parameters, verifies the request signature, and either redirects to\na contract page or renders the frontend HTML.\n\nArgs:\n    request: The incoming HTTP request\n    user_agent: User agent header from the client browser\n    x_forwarded_for: Client IP address forwarded by proxies\n    x_hubspot_signature: HubSpot signature for request verification\n    x_hubspot_signature_version: Version of the signature algorithm used\n    x_hubspot_signature_timestamp: Timestamp header required for v3 signature verification\n    http_client_session: HTTP client session for making external requests\n    db_session: Database session for data operations\n\nReturns:\n    Either a redirect response to a contract page or HTML content for the iframe","operationId":"get_app_router_v1_hubspot_iframe_get","parameters":[{"name":"user-agent","in":"header","required":false,"schema":{"type":"string","title":"User-Agent"}},{"name":"x-forwarded-for","in":"header","required":false,"schema":{"type":"string","title":"X-Forwarded-For"}},{"name":"x-hubspot-signature","in":"header","required":false,"schema":{"type":"string","title":"X-Hubspot-Signature"}},{"name":"x-hubspot-signature-version","in":"header","required":false,"schema":{"type":"string","title":"X-Hubspot-Signature-Version"}},{"name":"x-hubspot-signature-timestamp","in":"header","required":false,"schema":{"type":"string","title":"X-Hubspot-Signature-Timestamp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/hubspot/cards":{"get":{"tags":["hubspot"],"summary":"Get Cards","operationId":"get_cards_router_v1_hubspot_cards_get","parameters":[{"name":"user-agent","in":"header","required":false,"schema":{"type":"string","title":"User-Agent"}},{"name":"x-forwarded-for","in":"header","required":false,"schema":{"type":"string","title":"X-Forwarded-For"}},{"name":"x-hubspot-signature","in":"header","required":false,"schema":{"type":"string","title":"X-Hubspot-Signature"}},{"name":"x-hubspot-signature-version","in":"header","required":false,"schema":{"type":"string","title":"X-Hubspot-Signature-Version"}},{"name":"x-hubspot-signature-timestamp","in":"header","required":false,"schema":{"type":"string","title":"X-Hubspot-Signature-Timestamp"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/cluster_slack_teams/bulk":{"post":{"tags":["cluster_slack_teams"],"summary":"Bulk Add Cluster Slack Team Ids","operationId":"bulk_add_cluster_slack_team_ids_router_v1_cluster_slack_teams_bulk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-cluster-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterSlackTeamIDRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Add Cluster Slack Team Ids Router V1 Cluster Slack Teams Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["cluster_slack_teams"],"summary":"Bulk Delete Cluster Slack Team Ids","operationId":"bulk_delete_cluster_slack_team_ids_router_v1_cluster_slack_teams_bulk_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-cluster-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterSlackTeamIDRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Delete Cluster Slack Team Ids Router V1 Cluster Slack Teams Bulk Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/cluster_external_integrations/bulk":{"post":{"tags":["cluster_external_integrations"],"summary":"Bulk Add Cluster External Integration Ids","operationId":"bulk_add_cluster_external_integration_ids_router_v1_cluster_external_integrations_bulk_post","parameters":[{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterIntegrationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Add Cluster External Integration Ids Router V1 Cluster External Integrations Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["cluster_external_integrations"],"summary":"Bulk Delete Cluster External Integration Ids","operationId":"bulk_delete_cluster_external_integration_ids_router_v1_cluster_external_integrations_bulk_delete","parameters":[{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClusterIntegrationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"boolean","title":"Response Bulk Delete Cluster External Integration Ids Router V1 Cluster External Integrations Bulk Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/oauth2.0/external/{provider}/redirect":{"get":{"tags":["external_oauth"],"summary":"Oauth Redirect Handler","operationId":"oauth_redirect_handler_router_v1_oauth2_0_external__provider__redirect_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"$ref":"#/components/schemas/OAuthProviderType"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/oauth2.0/device/code/":{"post":{"tags":["device_authorization"],"summary":"Create Device Grant Token","operationId":"create_device_grant_token_router_v1_oauth2_0_device_code__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceGrantTokenCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceGrantTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/oauth2.0/token/":{"post":{"tags":["device_authorization"],"summary":"Request User Token","operationId":"request_user_token_router_v1_oauth2_0_token__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessTokenGetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/oauth2.0/client/":{"post":{"tags":["device_authorization"],"summary":"Create Client","operationId":"create_client_router_v1_oauth2_0_client__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SDClientResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/oauth2.0/device/cluster_info/":{"post":{"tags":["device_authorization"],"summary":"Update Cluster For User Code","operationId":"update_cluster_for_user_code_router_v1_oauth2_0_device_cluster_info__post","parameters":[{"name":"x-cluster-key","in":"header","required":false,"schema":{"type":"string","title":"X-Cluster-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceGrantUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/router/v1/chargebee/webhook":{"post":{"tags":["chargebee"],"summary":"Receive Webhook","description":"Forward the webhook to the correct cluster\n\n1. Get the customer id from the payload, if it is not found then raise an error\n2. Customer id is in the format {cluster_id}_{workspace_id}, extract the cluster_id and forward to that cluster","operationId":"receive_webhook_router_v1_chargebee_webhook_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Event"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBasic":[]}]}},"/router/v1/contract_signatories/":{"post":{"tags":["contract_signatories"],"summary":"Bulk Create Contract Signatories","operationId":"bulk_create_contract_signatories_router_v1_contract_signatories__post","responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ContractSignatoryDomainModel"},"type":"array","title":"Response Bulk Create Contract Signatories Router V1 Contract Signatories  Post"}}}}}}},"/contract-invite/{email_type}/by_token/{token}":{"get":{"tags":["cluster_proxy_endpoints"],"summary":"Handle V1 Cp Invite Token","operationId":"handle_v1_cp_invite_token_contract_invite__email_type__by_token__token__get","parameters":[{"name":"email_type","in":"path","required":true,"schema":{"type":"string","title":"Email Type"}},{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v3/contract-invite/{email_type}/by_token/{token}":{"get":{"tags":["cluster_proxy_endpoints"],"summary":"Handle V3 Cp Invite Token","operationId":"handle_v3_cp_invite_token_v3_contract_invite__email_type__by_token__token__get","parameters":[{"name":"email_type","in":"path","required":true,"schema":{"type":"string","title":"Email Type"}},{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/v3/invite_info/":{"get":{"tags":["cluster_proxy_endpoints"],"summary":"Handle Auth Cp Invite Info","operationId":"handle_auth_cp_invite_info_auth_v3_invite_info__get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organization/user-invite/by_token/{token}":{"get":{"tags":["cluster_proxy_endpoints"],"summary":"Handle Creator Invite Token","operationId":"handle_creator_invite_token_organization_user_invite_by_token__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sd_auth/oauth/login":{"get":{"tags":["cluster_proxy_endpoints"],"summary":"Oauth Login Redirect","operationId":"oauth_login_redirect_api_v1_sd_auth_oauth_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/sd_auth/oauth/callback":{"get":{"tags":["cluster_proxy_endpoints"],"summary":"Oauth Login Callback","operationId":"oauth_login_callback_api_v1_sd_auth_oauth_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sd_auth/oauth/signup":{"get":{"tags":["cluster_proxy_endpoints"],"summary":"Oauth Signup Redirect","operationId":"oauth_signup_redirect_api_v1_sd_auth_oauth_signup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/sd_auth/oauth/signup/callback":{"get":{"tags":["cluster_proxy_endpoints"],"summary":"Oauth Signup Callback","operationId":"oauth_signup_callback_api_v1_sd_auth_oauth_signup_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/emails/postmark/webhook":{"post":{"tags":["cluster_proxy_endpoints"],"summary":"Handle Webhook","operationId":"handle_webhook_api_v1_emails_postmark_webhook_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostmarkWebhookAPIRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sd_auth/login_v2/":{"post":{"tags":["cluster_proxy_endpoints"],"summary":"Login V2","operationId":"login_v2_api_v1_sd_auth_login_v2__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginV2Request"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/jwks.json":{"get":{"tags":["oidc_discovery"],"summary":"Get Jwks","description":"Aggregate JWKS from all clusters.\n\nReturns JSON with all public keys from all clusters for JWT verification.\nNo caching - always fetches fresh keys.","operationId":"get_jwks__well_known_jwks_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/openid-configuration":{"get":{"tags":["oidc_discovery"],"summary":"Get Openid Configuration","description":"Return OpenID Connect configuration.\n\nFetches config from a cluster and overrides URLs to point to Oogway.\nReturns provider metadata including endpoints, supported scopes,\nresponse types, and signing algorithms.","operationId":"get_openid_configuration__well_known_openid_configuration_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/oauth/token/":{"post":{"tags":["oidc_oauth"],"summary":"Token Endpoint","description":"Route token requests to appropriate cluster based on token prefix.\n\nSupports authorization code and refresh token grant types.\nToken format: {cluster_id}_{actual_token}","operationId":"token_endpoint_api_v1_oauth_token__post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/oauth/userinfo/":{"get":{"tags":["oidc_oauth"],"summary":"Userinfo Endpoint","description":"Route userinfo requests based on JWT cluster claim.\n\nDecodes JWT from Authorization header (without verification) to extract\ncluster claim, then routes to the appropriate cluster.","operationId":"userinfo_endpoint_api_v1_oauth_userinfo__get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/captcha-config":{"get":{"tags":["auth"],"summary":"Captcha Config","description":"Return whether the caller should use captcha test keys.\n\nThe FE calls this on page load (fire-and-forget).  If the caller's IP\nis in CAPTCHA_TEST_MODE_IPS the widget will use the always-pass test\nsite key and the BE will validate against the corresponding test secret.\n\nNon-whitelisted callers receive ``use_test_captcha: false`` and the normal\nprod key pair is used — captcha remains fully enforced for all users.","operationId":"captcha_config_api_v1_auth_captcha_config_get","parameters":[{"name":"X-Forwarded-For","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Forwarded-For"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptchaConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/{full_path}":{"post":{"tags":["match_all"],"summary":"Match All","description":"Match all route\n\nThis router will take any requests with a path that is not defined and\n1. If the request has email_hash, cluster_id etc that have a mapping, call that cluster directly\n2. Otherwise hit all clusters","operationId":"match_all__full_path__post","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["match_all"],"summary":"Match All","description":"Match all route\n\nThis router will take any requests with a path that is not defined and\n1. If the request has email_hash, cluster_id etc that have a mapping, call that cluster directly\n2. Otherwise hit all clusters","operationId":"match_all__full_path__post","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["match_all"],"summary":"Match All","description":"Match all route\n\nThis router will take any requests with a path that is not defined and\n1. If the request has email_hash, cluster_id etc that have a mapping, call that cluster directly\n2. Otherwise hit all clusters","operationId":"match_all__full_path__post","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["match_all"],"summary":"Match All","description":"Match all route\n\nThis router will take any requests with a path that is not defined and\n1. If the request has email_hash, cluster_id etc that have a mapping, call that cluster directly\n2. Otherwise hit all clusters","operationId":"match_all__full_path__post","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["match_all"],"summary":"Match All","description":"Match all route\n\nThis router will take any requests with a path that is not defined and\n1. If the request has email_hash, cluster_id etc that have a mapping, call that cluster directly\n2. Otherwise hit all clusters","operationId":"match_all__full_path__post","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccessTokenGetRequest":{"properties":{"device_code":{"type":"string","title":"Device Code"},"client_id":{"type":"string","title":"Client Id"},"grant_type":{"$ref":"#/components/schemas/OAuthGrantType"}},"type":"object","required":["device_code","client_id","grant_type"],"title":"AccessTokenGetRequest"},"Body_decode_signed_request_router_v1_sfdc__post":{"properties":{"signed_request":{"type":"string","title":"Signed Request"}},"type":"object","required":["signed_request"],"title":"Body_decode_signed_request_router_v1_sfdc__post"},"BulkClusterClientCreateRequest":{"properties":{"client_ids":{"items":{"type":"string"},"type":"array","title":"Client Ids"},"cluster_id":{"type":"string","title":"Cluster Id"}},"type":"object","required":["client_ids","cluster_id"],"title":"BulkClusterClientCreateRequest"},"BulkClusterEmailRequest":{"properties":{"email_hash_list":{"items":{"type":"string"},"type":"array","title":"Email Hash List"},"cluster_id":{"type":"string","title":"Cluster Id"}},"type":"object","required":["email_hash_list","cluster_id"],"title":"BulkClusterEmailRequest"},"BulkClusterIntegrationRequest":{"properties":{"external_id_list":{"items":{"type":"string"},"type":"array","title":"External Id List"},"cluster_id":{"type":"string","title":"Cluster Id"},"integration_type":{"$ref":"#/components/schemas/ExternalServiceIntegrationType"}},"type":"object","required":["external_id_list","cluster_id","integration_type"],"title":"BulkClusterIntegrationRequest"},"BulkClusterInviteTokenCreateRequest":{"properties":{"tokens":{"items":{"type":"string"},"type":"array","title":"Tokens"},"cluster_id":{"type":"string","title":"Cluster Id"}},"type":"object","required":["tokens","cluster_id"],"title":"BulkClusterInviteTokenCreateRequest"},"BulkClusterSlackTeamIDRequest":{"properties":{"slack_team_id_list":{"items":{"type":"string"},"type":"array","title":"Slack Team Id List"},"cluster_id":{"type":"string","title":"Cluster Id"}},"type":"object","required":["slack_team_id_list","cluster_id"],"title":"BulkClusterSlackTeamIDRequest"},"CaptchaConfigResponse":{"properties":{"use_test_captcha":{"type":"boolean","title":"Use Test Captcha"}},"type":"object","required":["use_test_captcha"],"title":"CaptchaConfigResponse","description":"Response for /api/v1/auth/captcha-config.\n\nuse_test_captcha: when True the FE should render the captcha *test* site\nkey (always-pass) and the BE will validate against the test secret key.\nNo site key is included in the response — both sides derive the correct\nkey from their own env vars."},"ClientCreateRequest":{"properties":{"client_name":{"type":"string","title":"Client Name"}},"type":"object","required":["client_name"],"title":"ClientCreateRequest"},"ClusterClientDomain":{"properties":{"client_id":{"type":"string","title":"Client Id"},"cluster_id":{"type":"string","title":"Cluster Id"}},"type":"object","required":["client_id","cluster_id"],"title":"ClusterClientDomain"},"ClusterEmailDomain":{"properties":{"email_hash":{"type":"string","title":"Email Hash"},"cluster_id":{"type":"string","title":"Cluster Id"}},"type":"object","required":["email_hash","cluster_id"],"title":"ClusterEmailDomain"},"ClusterInfoDomain":{"properties":{"cluster_id":{"type":"string","title":"Cluster Id"},"cluster_label":{"type":"string","title":"Cluster Label"},"cluster_url":{"type":"string","minLength":1,"format":"uri","title":"Cluster Url"},"cluster_oo_url":{"type":"string","minLength":1,"format":"uri","title":"Cluster Oo Url"},"cluster_wopi_oo_url":{"type":"string","minLength":1,"format":"uri","title":"Cluster Wopi Oo Url"},"sidebar_backend_url":{"type":"string","minLength":1,"format":"uri","title":"Sidebar Backend Url"}},"type":"object","required":["cluster_id","cluster_label","cluster_url","cluster_oo_url","cluster_wopi_oo_url","sidebar_backend_url"],"title":"ClusterInfoDomain"},"ContractSignatoryDomainModel":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uuid"},"cluster":{"type":"string","title":"Cluster"},"signatory_hash":{"type":"string","title":"Signatory Hash"}},"type":"object","required":["id","cluster","signatory_hash"],"title":"ContractSignatoryDomainModel"},"DeleteWorkspaceDataRequest":{"properties":{"email_hash_list":{"items":{"type":"string"},"type":"array","title":"Email Hash List"},"slack_team_id_list":{"items":{"type":"string"},"type":"array","title":"Slack Team Id List"},"external_integrations":{"items":{"$ref":"#/components/schemas/WorkspaceExternalIntegrationDelete"},"type":"array","title":"External Integrations"},"client_ids":{"items":{"type":"string"},"type":"array","title":"Client Ids"},"creator_tokens":{"items":{"type":"string"},"type":"array","title":"Creator Tokens"},"cp_tokens":{"items":{"type":"string"},"type":"array","title":"Cp Tokens"},"user_codes":{"items":{"type":"string"},"type":"array","title":"User Codes"}},"type":"object","title":"DeleteWorkspaceDataRequest","description":"Identifiers for one workspace's Oogway rows, grouped by table."},"DeviceGrantTokenCreateRequest":{"properties":{"client_id":{"type":"string","title":"Client Id"}},"type":"object","required":["client_id"],"title":"DeviceGrantTokenCreateRequest"},"DeviceGrantTokenResponse":{"properties":{"device_code":{"type":"string","title":"Device Code"},"user_code":{"type":"string","title":"User Code"},"verification_uri":{"type":"string","minLength":1,"format":"uri","title":"Verification Uri"},"verification_uri_complete":{"type":"string","minLength":1,"format":"uri","title":"Verification Uri Complete"},"expires_in":{"type":"integer","title":"Expires In"},"interval":{"type":"integer","title":"Interval"}},"type":"object","required":["device_code","user_code","verification_uri","verification_uri_complete","expires_in","interval"],"title":"DeviceGrantTokenResponse"},"DeviceGrantUpdateRequest":{"properties":{"user_code":{"type":"string","title":"User Code"},"status":{"$ref":"#/components/schemas/StatusType"},"cluster_id":{"type":"string","title":"Cluster Id"}},"type":"object","required":["user_code","status","cluster_id"],"title":"DeviceGrantUpdateRequest"},"ExternalServiceIntegrationType":{"type":"string","enum":["MS_TEAMS"],"title":"ExternalServiceIntegrationType","description":"This enum defines all external service integrations that can be mapped\nto clusters via external identifiers."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HeathCheckResponse":{"properties":{"database":{"type":"boolean","title":"Database"}},"type":"object","required":["database"],"title":"HeathCheckResponse"},"InvitedUser":{"properties":{"email":{"type":"string","title":"Email"},"first_name":{"type":"string","title":"First Name"}},"type":"object","required":["email","first_name"],"title":"InvitedUser"},"LoginV2Request":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"LoginV2Request"},"OAuthGrantType":{"type":"string","enum":["urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange"],"title":"OAuthGrantType"},"OAuthProviderType":{"type":"string","enum":["Google","Microsoft","Hubspot"],"title":"OAuthProviderType"},"PostmarkWebhookAPIRequest":{"properties":{"Metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata"}},"type":"object","required":["Metadata"],"title":"PostmarkWebhookAPIRequest"},"SDClientResponse":{"properties":{"client_name":{"type":"string","title":"Client Name"},"client_id":{"type":"string","title":"Client Id"}},"type":"object","required":["client_name","client_id"],"title":"SDClientResponse"},"StatusType":{"type":"string","enum":["PENDING","AUTHORIZED","DENIED"],"title":"StatusType"},"TrialOrgSignUpRequest":{"properties":{"token":{"type":"string","title":"Token"},"first_name":{"type":"string","title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"job_title":{"type":"string","title":"Job Title"},"company_name":{"type":"string","title":"Company Name"},"industry":{"type":"string","title":"Industry"},"use_case":{"type":"string","title":"Use Case"},"cluster_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cluster Location"},"invited_users":{"anyOf":[{"items":{"$ref":"#/components/schemas/InvitedUser"},"type":"array"},{"type":"null"}],"title":"Invited Users"}},"type":"object","required":["token","first_name","job_title","company_name","industry","use_case"],"title":"TrialOrgSignUpRequest"},"TrialSignupDomainModel":{"properties":{"id":{"type":"integer","title":"Id"},"token":{"type":"string","title":"Token"},"email":{"type":"string","title":"Email"},"oauth_provider":{"anyOf":[{"$ref":"#/components/schemas/OAuthProviderType"},{"type":"null"}]},"account_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Account Details"}},"type":"object","required":["id","token","email"],"title":"TrialSignupDomainModel"},"TrialSignupRequest":{"properties":{"email":{"type":"string","title":"Email"},"captcha":{"type":"string","title":"Captcha"}},"type":"object","required":["email","captcha"],"title":"TrialSignupRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WorkspaceExternalIntegrationDelete":{"properties":{"external_id_list":{"items":{"type":"string"},"type":"array","title":"External Id List"},"integration_type":{"$ref":"#/components/schemas/ExternalServiceIntegrationType"}},"type":"object","required":["external_id_list","integration_type"],"title":"WorkspaceExternalIntegrationDelete"}},"securitySchemes":{"HTTPBasic":{"type":"http","scheme":"basic"}}}}