{"openapi":"3.1.0","info":{"title":"Plow API","version":"0.1.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/healthz":{"get":{"summary":"Healthz","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/v1/me/channels":{"get":{"summary":"My Channels","operationId":"my_channels_v1_me_channels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},"type":"object","title":"Response My Channels V1 Me Channels Get"}}}}}}},"/v1/connectors":{"get":{"summary":"Connectors Status","operationId":"connectors_status_v1_connectors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorsOverviewResponse"}}}}}}},"/v1/auth/otp/request":{"post":{"summary":"Otp Request","operationId":"otp_request_v1_auth_otp_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtpRequestPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtpRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/otp/verify":{"post":{"summary":"Otp Verify","operationId":"otp_verify_v1_auth_otp_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtpVerifyPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtpVerifyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/activate":{"post":{"summary":"Create Activation","operationId":"create_activation_v1_auth_activate_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ActivationCreateRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivationCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/activate/redeem":{"post":{"summary":"Redeem Activation","operationId":"redeem_activation_v1_auth_activate_redeem_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ActivationRedeemPendingResponse"},{"$ref":"#/components/schemas/ActivationRedeemVerified"}],"title":"Response Redeem Activation V1 Auth Activate Redeem Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/profile":{"get":{"summary":"Get Profile","description":"Get the authenticated user's profile.","operationId":"get_profile_v1_auth_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}}}},"patch":{"summary":"Update Profile","description":"Update the authenticated user's profile.","operationId":"update_profile_v1_auth_profile_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/owner-identity":{"get":{"summary":"Get Owner Identity","description":"Return the owner's combined identity: display_name, Linq phones, and Gmail emails.\n\nGated by super-scope (*:*) — intended exclusively for plowd's activation path.\nThis keeps Gmail account emails off the channels:list surface, which is a\nlower-privilege scope used by third-party integrations.","operationId":"get_owner_identity_v1_auth_owner_identity_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnerIdentityResponse"}}}}}}},"/channels/linq/send":{"post":{"summary":"Send Message","operationId":"send_message_channels_linq_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/channels/linq/typing":{"post":{"summary":"Send Typing Indicator","operationId":"send_typing_indicator_channels_linq_typing_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TypingIndicatorRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TypingIndicatorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/channels/linq/event":{"post":{"summary":"Linq Webhook","operationId":"linq_webhook_channels_linq_event_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/channel/model-preference":{"post":{"summary":"Set Model Preference","operationId":"set_model_preference_v1_channel_model_preference_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelPreferenceBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/channels/linq/inbound":{"post":{"summary":"Inbound Self","description":"Inject `body.text` as if the authenticated user had texted Plow.","operationId":"inbound_self_channels_linq_inbound_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundSelfRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundSelfResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/connect-code":{"post":{"tags":["gmail"],"summary":"Oauth Connect Code","operationId":"oauth_connect_code_v1_connectors_gmail_connect_code_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectCodeResponse"}}}}}}},"/v1/connectors/gmail/connect":{"get":{"tags":["gmail"],"summary":"Oauth Connect","operationId":"oauth_connect_v1_connectors_gmail_connect_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","description":"Short-lived connect code from /connect-code","title":"Code"},"description":"Short-lived connect code from /connect-code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/connect/callback":{"get":{"tags":["gmail"],"summary":"Oauth Callback","operationId":"oauth_callback_v1_connectors_gmail_connect_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/status":{"get":{"tags":["gmail"],"summary":"Oauth Status","operationId":"oauth_status_v1_connectors_gmail_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorStatusResponse"}}}}}}},"/v1/connectors/gmail/disconnect":{"post":{"tags":["gmail"],"summary":"Oauth Disconnect","operationId":"oauth_disconnect_v1_connectors_gmail_disconnect_post","parameters":[{"name":"account","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific account to disconnect; omit to disconnect all","title":"Account"},"description":"Specific account to disconnect; omit to disconnect all"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisconnectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/set-default":{"post":{"tags":["gmail"],"summary":"Oauth Set Default","operationId":"oauth_set_default_v1_connectors_gmail_set_default_post","parameters":[{"name":"account","in":"query","required":true,"schema":{"type":"string","description":"Account identifier to set as default","title":"Account"},"description":"Account identifier to set as default"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDefaultResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/messages.list":{"post":{"tags":["gmail"],"summary":"Gmail Messages List","operationId":"gmail_messages_list_v1_connectors_gmail_messages_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_list_GmailMessageSummary__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/messages.get":{"post":{"tags":["gmail"],"summary":"Gmail Messages Get","operationId":"gmail_messages_get_v1_connectors_gmail_messages_get_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailGetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GmailFullMessage_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/messages.send":{"post":{"tags":["gmail"],"summary":"Gmail Messages Send","operationId":"gmail_messages_send_v1_connectors_gmail_messages_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailSendRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GmailSendResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/messages.reply":{"post":{"tags":["gmail"],"summary":"Gmail Messages Reply","operationId":"gmail_messages_reply_v1_connectors_gmail_messages_reply_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailReplyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GmailSendResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/messages.forward":{"post":{"tags":["gmail"],"summary":"Gmail Messages Forward","operationId":"gmail_messages_forward_v1_connectors_gmail_messages_forward_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailForwardRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GmailSendResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/labels.list":{"post":{"tags":["gmail"],"summary":"Gmail Labels List","operationId":"gmail_labels_list_v1_connectors_gmail_labels_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailLabelsListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_list_GmailLabelItem__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/messages.modify-labels":{"post":{"tags":["gmail"],"summary":"Gmail Messages Modify Labels","operationId":"gmail_messages_modify_labels_v1_connectors_gmail_messages_modify_labels_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailModifyLabelsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GmailModifyLabelsResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/attachments.get":{"post":{"tags":["gmail"],"summary":"Gmail Attachments Get","operationId":"gmail_attachments_get_v1_connectors_gmail_attachments_get_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailAttachmentGetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GmailAttachmentResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/drafts.list":{"post":{"tags":["gmail"],"summary":"Gmail Drafts List","operationId":"gmail_drafts_list_v1_connectors_gmail_drafts_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailDraftsListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_list_GmailDraftRef__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/drafts.create":{"post":{"tags":["gmail"],"summary":"Gmail Drafts Create","operationId":"gmail_drafts_create_v1_connectors_gmail_drafts_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailDraftCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GmailDraftResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/drafts.send":{"post":{"tags":["gmail"],"summary":"Gmail Drafts Send","operationId":"gmail_drafts_send_v1_connectors_gmail_drafts_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailDraftSendRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GmailSendResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/drafts.delete":{"post":{"tags":["gmail"],"summary":"Gmail Drafts Delete","operationId":"gmail_drafts_delete_v1_connectors_gmail_drafts_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailDraftDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GmailDeleteDraftResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/calendar.list":{"post":{"tags":["calendar"],"summary":"Calendar List Endpoint","operationId":"calendar_list_endpoint_v1_connectors_gmail_calendar_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleCalendarListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GoogleCalendarListResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/calendar.events.list":{"post":{"tags":["calendar"],"summary":"Calendar Events List Endpoint","operationId":"calendar_events_list_endpoint_v1_connectors_gmail_calendar_events_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleCalendarEventsListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GoogleCalendarEventsListResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/calendar.freebusy":{"post":{"tags":["calendar"],"summary":"Calendar Freebusy Endpoint","operationId":"calendar_freebusy_endpoint_v1_connectors_gmail_calendar_freebusy_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleCalendarFreeBusyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GoogleCalendarFreeBusyResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/calendar.events.create":{"post":{"tags":["calendar"],"summary":"Calendar Events Create Endpoint","operationId":"calendar_events_create_endpoint_v1_connectors_gmail_calendar_events_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleCalendarEventCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GoogleCalendarEvent_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/calendar.events.update":{"post":{"tags":["calendar"],"summary":"Calendar Events Update Endpoint","operationId":"calendar_events_update_endpoint_v1_connectors_gmail_calendar_events_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleCalendarEventUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GoogleCalendarEvent_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/gmail/calendar.events.delete":{"post":{"tags":["calendar"],"summary":"Calendar Events Delete Endpoint","operationId":"calendar_events_delete_endpoint_v1_connectors_gmail_calendar_events_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleCalendarEventDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_GoogleCalendarEventDeleteResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/connect-code":{"post":{"tags":["slack"],"summary":"Oauth Connect Code","operationId":"oauth_connect_code_v1_connectors_slack_connect_code_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectCodeResponse"}}}}}}},"/v1/connectors/slack/connect":{"get":{"tags":["slack"],"summary":"Oauth Connect","operationId":"oauth_connect_v1_connectors_slack_connect_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","description":"Short-lived connect code from /connect-code","title":"Code"},"description":"Short-lived connect code from /connect-code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/connect/callback":{"get":{"tags":["slack"],"summary":"Oauth Callback","operationId":"oauth_callback_v1_connectors_slack_connect_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/status":{"get":{"tags":["slack"],"summary":"Oauth Status","operationId":"oauth_status_v1_connectors_slack_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectorStatusResponse"}}}}}}},"/v1/connectors/slack/disconnect":{"post":{"tags":["slack"],"summary":"Oauth Disconnect","operationId":"oauth_disconnect_v1_connectors_slack_disconnect_post","parameters":[{"name":"account","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Specific account to disconnect; omit to disconnect all","title":"Account"},"description":"Specific account to disconnect; omit to disconnect all"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisconnectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/set-default":{"post":{"tags":["slack"],"summary":"Oauth Set Default","operationId":"oauth_set_default_v1_connectors_slack_set_default_post","parameters":[{"name":"account","in":"query","required":true,"schema":{"type":"string","description":"Account identifier to set as default","title":"Account"},"description":"Account identifier to set as default"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetDefaultResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/channels.list":{"post":{"tags":["slack"],"summary":"Slack Channels List","operationId":"slack_channels_list_v1_connectors_slack_channels_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelsListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_list_SlackChannel__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/users.list":{"post":{"tags":["slack"],"summary":"Slack Users List","operationId":"slack_users_list_v1_connectors_slack_users_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackUsersListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_list_SlackUser__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/conversations.open":{"post":{"tags":["slack"],"summary":"Slack Conversations Open","operationId":"slack_conversations_open_v1_connectors_slack_conversations_open_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackConversationsOpenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_SlackConversationOpenResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/messages.list":{"post":{"tags":["slack"],"summary":"Slack Messages List","operationId":"slack_messages_list_v1_connectors_slack_messages_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackMessagesListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_list_SlackMessage__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/messages.send":{"post":{"tags":["slack"],"summary":"Slack Messages Send","operationId":"slack_messages_send_v1_connectors_slack_messages_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackMessagesSendRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_SlackSendResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/messages.update":{"post":{"tags":["slack"],"summary":"Slack Messages Update","operationId":"slack_messages_update_v1_connectors_slack_messages_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackMessagesUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_SlackSendResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/files.upload":{"post":{"tags":["slack"],"summary":"Slack Files Upload","operationId":"slack_files_upload_v1_connectors_slack_files_upload_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackFileUploadRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_SlackFileUploadResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/messages.search":{"post":{"tags":["slack"],"summary":"Slack Messages Search","operationId":"slack_messages_search_v1_connectors_slack_messages_search_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse_list_SlackSearchResult__"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/slack/accounts/{account}/participate":{"patch":{"tags":["slack"],"summary":"Patch Slack Participate","description":"Partially update Participate Mode settings for a specific Slack account.\n\nOnly the fields included in the request body are updated; omitted fields\nare left unchanged.  Use ``participate_dm_allowlist: null`` to explicitly\nclear the allowlist.","operationId":"patch_slack_participate_v1_connectors_slack_accounts__account__participate_patch","parameters":[{"name":"account","in":"path","required":true,"schema":{"type":"string","title":"Account"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipatePatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"},"title":"Response Patch Slack Participate V1 Connectors Slack Accounts  Account  Participate Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/connectors/tools-manifest":{"get":{"tags":["connectors"],"summary":"Tools Manifest","operationId":"tools_manifest_v1_connectors_tools_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolsManifestResponse"}}}}}}},"/v1/chat/completions":{"post":{"tags":["llm"],"summary":"Chat Completions","operationId":"chat_completions_v1_chat_completions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/models":{"get":{"tags":["llm"],"summary":"List Models","operationId":"list_models_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsListResponse"}}}}}}},"/v1/audio/transcriptions":{"post":{"tags":["transcribe"],"summary":"Create Transcription","operationId":"create_transcription_v1_audio_transcriptions_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_transcription_v1_audio_transcriptions_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-keys":{"get":{"tags":["keys"],"summary":"List Keys","operationId":"list_keys_v1_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/KeyInfo"},"type":"array","title":"Response List Keys V1 Api Keys Get"}}}}}},"post":{"tags":["keys"],"summary":"Create Key","operationId":"create_key_v1_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-keys/{key_id}":{"delete":{"tags":["keys"],"summary":"Revoke Key","operationId":"revoke_key_v1_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usage":{"get":{"tags":["usage"],"summary":"Get Usage","operationId":"get_usage_v1_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageResponse"}}}}}}},"/v1/checkout":{"post":{"tags":["stripe"],"summary":"Create Checkout","operationId":"create_checkout_v1_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/stripe/webhook":{"post":{"tags":["stripe"],"summary":"Stripe Webhook","operationId":"stripe_webhook_v1_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/files/requests":{"post":{"tags":["files"],"summary":"Create File Request","operationId":"create_file_request_v1_files_requests_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFileRequestInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFileRequestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/requests/{token}/approve":{"post":{"tags":["files"],"summary":"Approve File Request","operationId":"approve_file_request_v1_files_requests__token__approve_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/requests/{token}/deny":{"post":{"tags":["files"],"summary":"Deny File Request","operationId":"deny_file_request_v1_files_requests__token__deny_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/files/requests/{token}":{"get":{"tags":["files"],"summary":"Get File Request Status","operationId":"get_file_request_status_v1_files_requests__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plowd/feature-tap":{"post":{"tags":["plowd"],"summary":"Report Feature Tap","operationId":"report_feature_tap_v1_plowd_feature_tap_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureTapReport"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Report Feature Tap V1 Plowd Feature Tap Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plowd/ops-event":{"post":{"tags":["plowd"],"summary":"Report Ops Event","operationId":"report_ops_event_v1_plowd_ops_event_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpsEventReport"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Report Ops Event V1 Plowd Ops Event Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plowd/incident":{"post":{"tags":["plowd"],"summary":"Report Incident","operationId":"report_incident_v1_plowd_incident_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayRecoveryReport"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Report Incident V1 Plowd Incident Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plowd/container-incident":{"post":{"tags":["plowd"],"summary":"Report Container Incident","operationId":"report_container_incident_v1_plowd_container_incident_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContainerIncidentReport"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Report Container Incident V1 Plowd Container Incident Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/system-message":{"post":{"summary":"Post System Message","operationId":"post_system_message_v1_system_message_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemMessageBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vip-threads":{"get":{"tags":["vip"],"summary":"List Vip Threads","description":"List the caller's active VIP threads.\n\nOwner-scoped: returns only threads the caller set up themselves.\nCounterparty visibility would require an explicit opt-in we don't\nmodel — matches the owner-only inbound routing contract.","operationId":"list_vip_threads_v1_vip_threads_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VipThreadsListResponse"}}}}}}},"/v1/vip-threads/{phone}/setup":{"post":{"tags":["vip"],"summary":"Setup Vip Thread","operationId":"setup_vip_thread_v1_vip_threads__phone__setup_post","parameters":[{"name":"phone","in":"path","required":true,"schema":{"type":"string","title":"Phone"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VipThreadSetupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VipThreadSetupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vip-threads/{phone}":{"delete":{"tags":["vip"],"summary":"Delete Vip Thread","operationId":"delete_vip_thread_v1_vip_threads__phone__delete","parameters":[{"name":"phone","in":"path","required":true,"schema":{"type":"string","title":"Phone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VipThreadDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plow100/spots":{"get":{"tags":["plow100"],"summary":"List Spots","operationId":"list_spots_v1_plow100_spots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpotsResponse"}}}}}}},"/v1/plow100/spots/{number}/lock":{"post":{"tags":["plow100"],"summary":"Lock Spot","operationId":"lock_spot_v1_plow100_spots__number__lock_post","parameters":[{"name":"number","in":"path","required":true,"schema":{"type":"integer","title":"Number"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LockRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LockResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plow100/events":{"get":{"tags":["plow100"],"summary":"Events Stream","operationId":"events_stream_v1_plow100_events_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/plow100/waitlist":{"post":{"tags":["plow100"],"summary":"Add Waitlist","operationId":"add_waitlist_v1_plow100_waitlist_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/plow100/webhook/stripe":{"post":{"tags":["plow100"],"summary":"Plow100 Stripe Webhook","operationId":"plow100_stripe_webhook_v1_plow100_webhook_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/chats":{"get":{"tags":["chats"],"summary":"List the caller's chats","operationId":"list_chats_v1_chats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatListResponse"}}}}}},"post":{"tags":["chats"],"summary":"Create a chat (inbound-first verification)","operationId":"create_chat_v1_chats_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResource"}}}},"401":{"description":"Missing or invalid `Authorization: Bearer plow_...` session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Line not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Request body validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/chats/{chat_uid}":{"get":{"tags":["chats"],"summary":"Get a chat's current state","operationId":"get_chat_v1_chats__chat_uid__get","parameters":[{"name":"chat_uid","in":"path","required":true,"schema":{"type":"string","pattern":"^cht_[A-Za-z0-9_-]+$","title":"Chat Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResource"}}}},"401":{"description":"Missing or invalid `Authorization: Bearer plow_...` session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Chat, invitation, or other resource not found. Also returned when the authenticated session does not own the referenced chat — chat existence is not leaked to non-owners.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Resource not in the right state for this operation (e.g. chat still pending).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Request body or path parameter validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["chats"],"summary":"Soft-delete a chat","operationId":"delete_chat_v1_chats__chat_uid__delete","parameters":[{"name":"chat_uid","in":"path","required":true,"schema":{"type":"string","pattern":"^cht_[A-Za-z0-9_-]+$","title":"Chat Uid"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Missing or invalid `Authorization: Bearer plow_...` session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Chat, invitation, or other resource not found. Also returned when the authenticated session does not own the referenced chat — chat existence is not leaked to non-owners.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Resource not in the right state for this operation (e.g. chat still pending).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Request body or path parameter validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/chats/{chat_uid}/messages":{"post":{"tags":["chats"],"summary":"Send a message on an active chat","operationId":"create_message_v1_chats__chat_uid__messages_post","parameters":[{"name":"chat_uid","in":"path","required":true,"schema":{"type":"string","pattern":"^cht_[A-Za-z0-9_-]+$","title":"Chat Uid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResource"}}}},"401":{"description":"Missing or invalid `Authorization: Bearer plow_...` session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Chat, invitation, or other resource not found. Also returned when the authenticated session does not own the referenced chat — chat existence is not leaked to non-owners.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Resource not in the right state for this operation (e.g. chat still pending).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Request body or path parameter validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"get":{"tags":["chats"],"summary":"List messages in a chat (newest first, cursor-paginated)","operationId":"list_messages_v1_chats__chat_uid__messages_get","parameters":[{"name":"chat_uid","in":"path","required":true,"schema":{"type":"string","pattern":"^cht_[A-Za-z0-9_-]+$","title":"Chat Uid"}},{"name":"starting_after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^msg_[A-Za-z0-9_-]+$"},{"type":"null"}],"title":"Starting After"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageListResponse"}}}},"401":{"description":"Missing or invalid `Authorization: Bearer plow_...` session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Chat, invitation, or other resource not found. Also returned when the authenticated session does not own the referenced chat — chat existence is not leaked to non-owners.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Resource not in the right state for this operation (e.g. chat still pending).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Request body or path parameter validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/chats/{chat_uid}/invitations/{cp_uid}/resend":{"post":{"tags":["chats"],"summary":"Re-issue a pending member's verification code","operationId":"resend_invitation_v1_chats__chat_uid__invitations__cp_uid__resend_post","parameters":[{"name":"chat_uid","in":"path","required":true,"schema":{"type":"string","pattern":"^cht_[A-Za-z0-9_-]+$","title":"Chat Uid"}},{"name":"cp_uid","in":"path","required":true,"schema":{"type":"string","pattern":"^cp_[A-Za-z0-9_-]+$","title":"Cp Uid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatParticipantMember"}}}},"401":{"description":"Missing or invalid `Authorization: Bearer plow_...` session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Chat, invitation, or other resource not found. Also returned when the authenticated session does not own the referenced chat — chat existence is not leaked to non-owners.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Resource not in the right state for this operation (e.g. chat still pending).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Request body or path parameter validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/lines":{"get":{"tags":["lines"],"summary":"List active messaging lines","description":"Returns every messaging line currently provisioned on the service. Provides a small fixed pool of iMessage numbers; soft-deleted lines are excluded. Returns the full list — no pagination.","operationId":"list_lines_v1_lines_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LineListResponse"}}}}}}},"/v1/ws/ticket":{"post":{"tags":["ws"],"summary":"Mint a one-shot WebSocket ticket scoped to a chat","operationId":"mint_ws_ticket_v1_ws_ticket_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WsTicketRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WsTicketResponse"}}}},"401":{"description":"Missing or invalid `Authorization: Bearer plow_...` session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Chat, invitation, or other resource not found. Also returned when the authenticated session does not own the referenced chat — chat existence is not leaked to non-owners.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Resource not in the right state for this operation (e.g. chat still pending).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Request body or path parameter validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/app/{path}":{"get":{"summary":"Spa Catchall","operationId":"spa_catchall_app__path__get","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app":{"get":{"summary":"Spa Root","operationId":"spa_root_app_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/100/{path}":{"get":{"summary":"Plow100 Catchall","operationId":"plow100_catchall_100__path__get","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/100":{"get":{"summary":"Plow100 Root","operationId":"plow100_root_100_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AccountInfo":{"properties":{"account":{"type":"string","title":"Account"},"is_default":{"type":"boolean","title":"Is Default"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"participate_enabled":{"type":"boolean","title":"Participate Enabled","default":false},"participate_dm_allowlist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Participate Dm Allowlist"},"participate_last_received_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Participate Last Received At"},"participate_last_posted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Participate Last Posted At"}},"type":"object","required":["account","is_default"],"title":"AccountInfo"},"ActivationCreateRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name"},"provision_chat":{"type":"boolean","title":"Provision Chat","default":false}},"type":"object","title":"ActivationCreateRequest"},"ActivationCreateResponse":{"properties":{"display_code":{"type":"string","title":"Display Code"},"activation_secret":{"type":"string","title":"Activation Secret"},"send_to":{"type":"string","title":"Send To"},"line_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Line Id"}},"type":"object","required":["display_code","activation_secret","send_to"],"title":"ActivationCreateResponse"},"ActivationRedeemPendingResponse":{"properties":{"status":{"type":"string","title":"Status"}},"type":"object","required":["status"],"title":"ActivationRedeemPendingResponse"},"ActivationRedeemVerified":{"properties":{"status":{"type":"string","title":"Status"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"chat":{"anyOf":[{"$ref":"#/components/schemas/ChatResource"},{"type":"null"}]}},"type":"object","required":["status","token"],"title":"ActivationRedeemVerified","description":"Verified redeem response + the provisioned one-on-one chat (registration\nonboarding Surface 4). Defined in the app layer rather than plow_schemas\nbecause ChatResource lives with the chat router and plow_schemas is\nintentionally app-independent. ``chat`` is null for non-chat activations or\nwhen provisioning failed (a verified redeem reflects the final chat state,\nso null never means \"still in flight\")."},"ApproveInput":{"properties":{"paths":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Paths"}},"type":"object","required":["paths"],"title":"ApproveInput"},"Body_create_transcription_v1_audio_transcriptions_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_create_transcription_v1_audio_transcriptions_post"},"ChatCompletionRequest":{"properties":{"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"messages":{"items":{"$ref":"#/components/schemas/ChatMessage"},"type":"array","title":"Messages"},"stream":{"type":"boolean","title":"Stream","default":false},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature"},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P"},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens"},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop"},"tools":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Tools"},"tool_choice":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Tool Choice"}},"additionalProperties":true,"type":"object","required":["messages"],"title":"ChatCompletionRequest"},"ChatCreateRequest":{"properties":{"participants":{"items":{"oneOf":[{"$ref":"#/components/schemas/CreateChatParticipantAgent"},{"$ref":"#/components/schemas/CreateChatParticipantMember"}],"discriminator":{"propertyName":"type","mapping":{"agent":"#/components/schemas/CreateChatParticipantAgent","member":"#/components/schemas/CreateChatParticipantMember"}}},"type":"array","title":"Participants","description":"Every participant in the chat, discriminated by `type`. Exactly one `agent` entry is required (carries the chat's `line_id`); at least one `member` entry is required."}},"additionalProperties":false,"type":"object","required":["participants"],"title":"ChatCreateRequest","examples":[{"participants":[{"line_id":"ln_p1","type":"agent"},{"display_name":"Alice","type":"member"}]}]},"ChatListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/ChatResource"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","description":"Always `false` today — the chats list returns the caller's full set and does not paginate. Present for envelope consistency."},"url":{"type":"string","title":"Url","description":"Base resource URL for this list (`/v1/chats`); not a unique-page URL."}},"additionalProperties":false,"type":"object","required":["data","has_more","url"],"title":"ChatListResponse"},"ChatMessage":{"properties":{"role":{"type":"string","title":"Role"},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"tool_calls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Tool Calls"},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id"}},"type":"object","required":["role"],"title":"ChatMessage"},"ChatParticipantAgent":{"properties":{"type":{"type":"string","const":"agent","title":"Type","default":"agent"},"line":{"$ref":"#/components/schemas/LineResource"}},"additionalProperties":false,"type":"object","required":["line"],"title":"ChatParticipantAgent"},"ChatParticipantMember":{"properties":{"type":{"type":"string","const":"member","title":"Type","default":"member"},"uid":{"type":"string","title":"Uid"},"object":{"type":"string","const":"chat_participant","title":"Object","default":"chat_participant"},"status":{"type":"string","enum":["pending_verification","active"],"title":"Status"},"display_name":{"type":"string","title":"Display Name"},"provider_type":{"type":"string","const":"imessage","title":"Provider Type"},"provider_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Key"},"verification_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification Code","description":"Plaintext `VERIFY-XXXXXX` code. Returned only on chat creation (and on invitation resend). Pass back via inbound text to the chat's line from this member's messaging identity to verify; not re-fetchable."},"verification_code_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Verification Code Expires At"},"verified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Verified At"},"joined_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Joined At"}},"additionalProperties":false,"type":"object","required":["uid","status","display_name","provider_type"],"title":"ChatParticipantMember"},"ChatResource":{"properties":{"uid":{"type":"string","title":"Uid"},"object":{"type":"string","const":"chat","title":"Object","default":"chat"},"status":{"type":"string","enum":["pending","active","failed"],"title":"Status"},"provider_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Key"},"failure_reason":{"anyOf":[{"type":"string","enum":["line_collision_on_activation","provider_error"]},{"type":"null"}],"title":"Failure Reason"},"participants":{"items":{"oneOf":[{"$ref":"#/components/schemas/ChatParticipantAgent"},{"$ref":"#/components/schemas/ChatParticipantMember"}],"discriminator":{"propertyName":"type","mapping":{"agent":"#/components/schemas/ChatParticipantAgent","member":"#/components/schemas/ChatParticipantMember"}}},"type":"array","title":"Participants"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"additionalProperties":false,"type":"object","required":["uid","status","participants","created_at"],"title":"ChatResource"},"CheckoutRequest":{"properties":{"amount_usd":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d{0,2}0*$"}],"title":"Amount Usd"}},"type":"object","required":["amount_usd"],"title":"CheckoutRequest"},"CheckoutResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"CheckoutResponse"},"ConnectCodeResponse":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"ConnectCodeResponse"},"ConnectorStatusResponse":{"properties":{"connected":{"type":"boolean","title":"Connected"},"connector":{"type":"string","title":"Connector"},"account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account"},"accounts":{"items":{"$ref":"#/components/schemas/AccountInfo"},"type":"array","title":"Accounts","default":[]},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"}},"type":"object","required":["connected","connector","account"],"title":"ConnectorStatusResponse"},"ConnectorsOverviewResponse":{"properties":{"gmail":{"$ref":"#/components/schemas/ConnectorStatusResponse"},"slack":{"$ref":"#/components/schemas/ConnectorStatusResponse"},"web_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Web Base Url"}},"type":"object","required":["gmail","slack"],"title":"ConnectorsOverviewResponse"},"ContainerIncidentReport":{"properties":{"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id"},"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind","description":"bundled manifest key (e.g. 'plow-starter') or 'user-tarball'"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"unhealthy_for_s":{"type":"number","minimum":0.0,"title":"Unhealthy For S","description":"Seconds the enabled container has stayed probe-unhealthy"},"app_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Version"},"openclaw_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Openclaw Version"}},"type":"object","required":["name","kind","unhealthy_for_s"],"title":"ContainerIncidentReport"},"CreateChatParticipantAgent":{"properties":{"type":{"type":"string","const":"agent","title":"Type"},"line_id":{"type":"string","pattern":"^ln_[A-Za-z0-9_-]+$","title":"Line Id","description":"Reference to the `LineResource.uid` this chat will use. Obtain via `GET /v1/lines`."}},"additionalProperties":false,"type":"object","required":["type","line_id"],"title":"CreateChatParticipantAgent"},"CreateChatParticipantMember":{"properties":{"type":{"type":"string","const":"member","title":"Type"},"display_name":{"type":"string","maxLength":255,"minLength":1,"title":"Display Name","description":"Display name shown for this member when serializing chat state. The member's messaging identity (phone number or Apple ID handle) is NOT supplied here: it is learned from the verification inbound when they text the verification code returned by this endpoint."}},"additionalProperties":false,"type":"object","required":["type","display_name"],"title":"CreateChatParticipantMember"},"CreateFileRequestInput":{"properties":{"local_request_id":{"type":"string","title":"Local Request Id"},"description":{"type":"string","title":"Description"},"candidates":{"items":{"$ref":"#/components/schemas/FileRequestCandidate"},"type":"array","minItems":1,"title":"Candidates"}},"type":"object","required":["local_request_id","description","candidates"],"title":"CreateFileRequestInput"},"CreateFileRequestResponse":{"properties":{"token":{"type":"string","title":"Token"},"approve_url":{"type":"string","title":"Approve Url"}},"type":"object","required":["token","approve_url"],"title":"CreateFileRequestResponse"},"CreateKeyRequest":{"properties":{"scopes":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Scopes"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["scopes"],"title":"CreateKeyRequest"},"CreateKeyResponse":{"properties":{"token":{"type":"string","title":"Token"},"key_prefix":{"type":"string","title":"Key Prefix"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["token","key_prefix","scopes","name"],"title":"CreateKeyResponse"},"DailyUsage":{"properties":{"date":{"type":"string","title":"Date"},"tokens":{"type":"integer","title":"Tokens"},"cost_usd":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Cost Usd"}},"type":"object","required":["date","tokens","cost_usd"],"title":"DailyUsage"},"DataResponse_GmailAttachmentResult_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/GmailAttachmentResult"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[GmailAttachmentResult]"},"DataResponse_GmailDeleteDraftResult_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/GmailDeleteDraftResult"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[GmailDeleteDraftResult]"},"DataResponse_GmailDraftResult_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/GmailDraftResult"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[GmailDraftResult]"},"DataResponse_GmailFullMessage_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/GmailFullMessage"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[GmailFullMessage]"},"DataResponse_GmailModifyLabelsResult_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/GmailModifyLabelsResult"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[GmailModifyLabelsResult]"},"DataResponse_GmailSendResult_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/GmailSendResult"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[GmailSendResult]"},"DataResponse_GoogleCalendarEventDeleteResponse_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/GoogleCalendarEventDeleteResponse"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[GoogleCalendarEventDeleteResponse]"},"DataResponse_GoogleCalendarEvent_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/GoogleCalendarEvent"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[GoogleCalendarEvent]"},"DataResponse_GoogleCalendarEventsListResponse_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/GoogleCalendarEventsListResponse"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[GoogleCalendarEventsListResponse]"},"DataResponse_GoogleCalendarFreeBusyResponse_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/GoogleCalendarFreeBusyResponse"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[GoogleCalendarFreeBusyResponse]"},"DataResponse_GoogleCalendarListResponse_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/GoogleCalendarListResponse"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[GoogleCalendarListResponse]"},"DataResponse_SlackConversationOpenResult_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/SlackConversationOpenResult"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[SlackConversationOpenResult]"},"DataResponse_SlackFileUploadResult_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/SlackFileUploadResult"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[SlackFileUploadResult]"},"DataResponse_SlackSendResult_":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"$ref":"#/components/schemas/SlackSendResult"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[SlackSendResult]"},"DataResponse_list_GmailDraftRef__":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"items":{"$ref":"#/components/schemas/GmailDraftRef"},"type":"array","title":"Data"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[list[GmailDraftRef]]"},"DataResponse_list_GmailLabelItem__":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"items":{"$ref":"#/components/schemas/GmailLabelItem"},"type":"array","title":"Data"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[list[GmailLabelItem]]"},"DataResponse_list_GmailMessageSummary__":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"items":{"$ref":"#/components/schemas/GmailMessageSummary"},"type":"array","title":"Data"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[list[GmailMessageSummary]]"},"DataResponse_list_SlackChannel__":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"items":{"$ref":"#/components/schemas/SlackChannel"},"type":"array","title":"Data"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[list[SlackChannel]]"},"DataResponse_list_SlackMessage__":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"items":{"$ref":"#/components/schemas/SlackMessage"},"type":"array","title":"Data"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[list[SlackMessage]]"},"DataResponse_list_SlackSearchResult__":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"items":{"$ref":"#/components/schemas/SlackSearchResult"},"type":"array","title":"Data"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[list[SlackSearchResult]]"},"DataResponse_list_SlackUser__":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"data":{"items":{"$ref":"#/components/schemas/SlackUser"},"type":"array","title":"Data"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["data"],"title":"DataResponse[list[SlackUser]]"},"DisconnectResponse":{"properties":{"status":{"type":"string","title":"Status"},"connector":{"type":"string","title":"Connector"}},"type":"object","required":["status","connector"],"title":"DisconnectResponse"},"ErrorDetail":{"properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","permission_error","not_found_error","delivery_error","api_error"],"title":"Type","description":"Stable category for client-side routing logic. Maps loosely to HTTP status (e.g. 401 → authentication_error, 403 → permission_error) but is the authoritative discriminator."},"code":{"type":"string","title":"Code","description":"Stable per-condition identifier (e.g. `chat_not_found`, `chat_not_ready`, `invitation_not_found`). Safe to switch on."},"message":{"type":"string","title":"Message","description":"Human-readable description of the failure. Not localized in v1."},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Dotted path to the offending request field for validation errors (e.g. `body.line_id`). Null when the failure isn't field-scoped."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Optional structured context (e.g. provider error codes from delivery failures). Absent when there's nothing extra to convey."}},"additionalProperties":false,"type":"object","required":["type","code","message"],"title":"ErrorDetail","description":"Inner error object — fields produced by `main.error_envelope`.\n\n`Request-Id` is returned as a response *header* on every API response (set\nby the request-context middleware in `main.py`); it is not part of the\nresponse body."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ErrorDetail"}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Top-level error envelope. Every non-2xx response uses this shape."},"FeatureTapReport":{"properties":{"feature":{"type":"string","enum":["delete_container","new_container"],"title":"Feature"}},"type":"object","required":["feature"],"title":"FeatureTapReport"},"FileRequestCandidate":{"properties":{"name":{"type":"string","title":"Name"},"path":{"type":"string","title":"Path"},"size":{"type":"integer","title":"Size"},"modified":{"type":"number","title":"Modified"},"content_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Type"}},"type":"object","required":["name","path","size","modified"],"title":"FileRequestCandidate"},"GatewayRecoveryReport":{"properties":{"step":{"type":"string","enum":["clear_token","clear_identity"],"title":"Step","description":"Recovery action taken: clear_token or clear_identity"},"reason":{"type":"string","title":"Reason","description":"Last error reason string from the gateway"},"consecutive_failures":{"type":"integer","minimum":0.0,"title":"Consecutive Failures"},"elapsed_ms":{"type":"integer","minimum":0.0,"title":"Elapsed Ms","description":"Time stuck in the signature-expired loop"},"last_error":{"type":"string","title":"Last Error"},"device_id":{"type":"string","title":"Device Id"},"platform":{"type":"string","title":"Platform","description":"sys.platform value (e.g. 'darwin')"},"gateway_url":{"type":"string","title":"Gateway Url"},"timestamp_ms":{"type":"integer","minimum":0.0,"title":"Timestamp Ms"},"host_platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host Platform","description":"platform.platform() string"}},"type":"object","required":["step","reason","consecutive_failures","elapsed_ms","last_error","device_id","platform","gateway_url","timestamp_ms"],"title":"GatewayRecoveryReport"},"GmailAttachmentGetRequest":{"properties":{"message_id":{"type":"string","title":"Message Id"},"attachment_id":{"type":"string","title":"Attachment Id"},"account":{"type":"string","minLength":1,"title":"Account"}},"type":"object","required":["message_id","attachment_id","account"],"title":"GmailAttachmentGetRequest"},"GmailAttachmentInput":{"properties":{"filename":{"type":"string","title":"Filename"},"data_base64":{"type":"string","title":"Data Base64"},"content_type":{"type":"string","title":"Content Type","default":"application/octet-stream"}},"type":"object","required":["filename","data_base64"],"title":"GmailAttachmentInput"},"GmailAttachmentResult":{"properties":{"data":{"type":"string","title":"Data"},"size":{"type":"integer","title":"Size"}},"type":"object","required":["data","size"],"title":"GmailAttachmentResult"},"GmailDeleteDraftResult":{"properties":{"draft_id":{"type":"string","title":"Draft Id"}},"type":"object","required":["draft_id"],"title":"GmailDeleteDraftResult"},"GmailDraftCreateRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"},"to":{"items":{"type":"string"},"type":"array","minItems":1,"title":"To"},"subject":{"type":"string","title":"Subject"},"body":{"type":"string","title":"Body","default":""},"cc":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cc"},"bcc":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bcc"},"attachments":{"items":{"$ref":"#/components/schemas/GmailAttachmentInput"},"type":"array","title":"Attachments"}},"type":"object","required":["account","to","subject"],"title":"GmailDraftCreateRequest"},"GmailDraftDeleteRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"},"draft_id":{"type":"string","title":"Draft Id"}},"type":"object","required":["account","draft_id"],"title":"GmailDraftDeleteRequest"},"GmailDraftRef":{"properties":{"id":{"type":"string","title":"Id"},"message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message Id"}},"type":"object","required":["id"],"title":"GmailDraftRef"},"GmailDraftResult":{"properties":{"id":{"type":"string","title":"Id"}},"type":"object","required":["id"],"title":"GmailDraftResult"},"GmailDraftSendRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"},"draft_id":{"type":"string","title":"Draft Id"}},"type":"object","required":["account","draft_id"],"title":"GmailDraftSendRequest"},"GmailDraftsListRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"},"max_results":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Max Results","default":10}},"type":"object","required":["account"],"title":"GmailDraftsListRequest"},"GmailForwardRequest":{"properties":{"message_id":{"type":"string","title":"Message Id"},"account":{"type":"string","minLength":1,"title":"Account"},"to":{"items":{"type":"string"},"type":"array","minItems":1,"title":"To"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"cc":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cc"},"bcc":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bcc"}},"type":"object","required":["message_id","account","to"],"title":"GmailForwardRequest"},"GmailFullMessage":{"properties":{"id":{"type":"string","title":"Id"},"thread_id":{"type":"string","title":"Thread Id"},"snippet":{"type":"string","title":"Snippet"},"subject":{"type":"string","title":"Subject"},"from":{"type":"string","title":"From"},"to":{"type":"string","title":"To"},"date":{"type":"string","title":"Date"},"account":{"type":"string","minLength":1,"title":"Account"},"label_ids":{"items":{"type":"string"},"type":"array","title":"Label Ids"},"text_body":{"type":"string","title":"Text Body"},"html_body":{"type":"string","title":"Html Body"},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers"},"attachments":{"items":{"$ref":"#/components/schemas/GmailMessageAttachment"},"type":"array","title":"Attachments"}},"type":"object","required":["id","thread_id","snippet","subject","from","to","date","account","label_ids","text_body","html_body","headers"],"title":"GmailFullMessage"},"GmailGetRequest":{"properties":{"message_id":{"type":"string","title":"Message Id"},"account":{"type":"string","minLength":1,"title":"Account"}},"type":"object","required":["message_id","account"],"title":"GmailGetRequest"},"GmailLabelItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"}},"type":"object","required":["id","name","type"],"title":"GmailLabelItem"},"GmailLabelsListRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"}},"type":"object","required":["account"],"title":"GmailLabelsListRequest"},"GmailListRequest":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"},"after_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"After Date"},"before_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before Date"},"from_addresses":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"From Addresses"},"max_results":{"type":"integer","maximum":25.0,"minimum":1.0,"title":"Max Results","default":10},"account":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Account"},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},"type":"object","title":"GmailListRequest"},"GmailMessageAttachment":{"properties":{"attachment_id":{"type":"string","title":"Attachment Id"},"filename":{"type":"string","title":"Filename"},"mime_type":{"type":"string","title":"Mime Type"},"size":{"type":"integer","title":"Size"}},"type":"object","required":["attachment_id","filename","mime_type","size"],"title":"GmailMessageAttachment"},"GmailMessageSummary":{"properties":{"id":{"type":"string","title":"Id"},"thread_id":{"type":"string","title":"Thread Id"},"snippet":{"type":"string","title":"Snippet"},"subject":{"type":"string","title":"Subject"},"from":{"type":"string","title":"From"},"to":{"type":"string","title":"To"},"date":{"type":"string","title":"Date"},"account":{"type":"string","minLength":1,"title":"Account"}},"type":"object","required":["id","thread_id","snippet","subject","from","to","date","account"],"title":"GmailMessageSummary"},"GmailModifyLabelsRequest":{"properties":{"message_id":{"type":"string","title":"Message Id"},"account":{"type":"string","minLength":1,"title":"Account"},"add_labels":{"items":{"type":"string"},"type":"array","title":"Add Labels"},"remove_labels":{"items":{"type":"string"},"type":"array","title":"Remove Labels"}},"type":"object","required":["message_id","account"],"title":"GmailModifyLabelsRequest"},"GmailModifyLabelsResult":{"properties":{"id":{"type":"string","title":"Id"},"threadId":{"type":"string","title":"Threadid"},"labelIds":{"items":{"type":"string"},"type":"array","title":"Labelids"}},"type":"object","required":["id","threadId","labelIds"],"title":"GmailModifyLabelsResult"},"GmailReplyRequest":{"properties":{"message_id":{"type":"string","title":"Message Id"},"account":{"type":"string","minLength":1,"title":"Account"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"reply_all":{"type":"boolean","title":"Reply All","default":false},"no_quote":{"type":"boolean","title":"No Quote","default":false},"cc":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cc"},"bcc":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bcc"},"attachments":{"items":{"$ref":"#/components/schemas/GmailAttachmentInput"},"type":"array","title":"Attachments"}},"type":"object","required":["message_id","account"],"title":"GmailReplyRequest"},"GmailSendRequest":{"properties":{"to":{"items":{"type":"string"},"type":"array","minItems":1,"title":"To"},"subject":{"type":"string","title":"Subject"},"body":{"type":"string","title":"Body"},"cc":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cc"},"bcc":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bcc"},"account":{"type":"string","minLength":1,"title":"Account"},"attachments":{"items":{"$ref":"#/components/schemas/GmailAttachmentInput"},"type":"array","title":"Attachments"}},"type":"object","required":["to","subject","body","account"],"title":"GmailSendRequest"},"GmailSendResult":{"properties":{"id":{"type":"string","title":"Id"},"threadId":{"type":"string","title":"Threadid"}},"type":"object","required":["id","threadId"],"title":"GmailSendResult"},"GoogleCalendarAttendee":{"properties":{"email":{"type":"string","title":"Email","default":""},"display_name":{"type":"string","title":"Display Name","default":""},"response_status":{"type":"string","title":"Response Status","default":""}},"type":"object","title":"GoogleCalendarAttendee"},"GoogleCalendarEntry":{"properties":{"id":{"type":"string","title":"Id"},"summary":{"type":"string","title":"Summary","default":""},"summary_override":{"type":"string","title":"Summary Override","default":""},"description":{"type":"string","title":"Description","default":""},"time_zone":{"type":"string","title":"Time Zone","default":""},"primary":{"type":"boolean","title":"Primary","default":false},"selected":{"type":"boolean","title":"Selected","default":false},"access_role":{"type":"string","title":"Access Role","default":""},"account":{"type":"string","minLength":1,"title":"Account"}},"type":"object","required":["id","account"],"title":"GoogleCalendarEntry"},"GoogleCalendarEvent":{"properties":{"id":{"type":"string","title":"Id","default":""},"summary":{"type":"string","title":"Summary","default":""},"description":{"type":"string","title":"Description","default":""},"location":{"type":"string","title":"Location","default":""},"start":{"$ref":"#/components/schemas/GoogleCalendarEventTime","default":{}},"end":{"$ref":"#/components/schemas/GoogleCalendarEventTime","default":{}},"status":{"type":"string","title":"Status","default":""},"html_link":{"type":"string","title":"Html Link","default":""},"hangout_link":{"type":"string","title":"Hangout Link","default":""},"visibility":{"type":"string","title":"Visibility","default":""},"transparency":{"type":"string","title":"Transparency","default":""},"attendees":{"items":{"$ref":"#/components/schemas/GoogleCalendarAttendee"},"type":"array","title":"Attendees","default":[]},"organizer":{"$ref":"#/components/schemas/GoogleCalendarAttendee","default":{"email":"","display_name":"","response_status":""}},"recurrence":{"items":{"type":"string"},"type":"array","title":"Recurrence","default":[]},"recurring_event_id":{"type":"string","title":"Recurring Event Id","default":""},"i_cal_uid":{"type":"string","title":"I Cal Uid","default":""},"account":{"type":"string","minLength":1,"title":"Account"},"calendar_id":{"type":"string","minLength":1,"title":"Calendar Id"}},"type":"object","required":["account","calendar_id"],"title":"GoogleCalendarEvent"},"GoogleCalendarEventCreateRequest":{"properties":{"summary":{"type":"string","title":"Summary"},"start":{"type":"string","title":"Start"},"end":{"type":"string","title":"End"},"description":{"type":"string","title":"Description","default":""},"location":{"type":"string","title":"Location","default":""},"attendees":{"items":{"type":"string"},"type":"array","title":"Attendees","default":[]},"calendar_id":{"type":"string","minLength":1,"title":"Calendar Id","default":"primary"},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"},"account":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Account"},"add_meet":{"type":"boolean","title":"Add Meet","default":false},"recurrence":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Recurrence"},"confirm_conflict":{"type":"boolean","title":"Confirm Conflict","default":false}},"type":"object","required":["summary","start","end"],"title":"GoogleCalendarEventCreateRequest"},"GoogleCalendarEventDeleteRequest":{"properties":{"event_id":{"type":"string","title":"Event Id"},"calendar_id":{"type":"string","minLength":1,"title":"Calendar Id"},"account":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Account"}},"type":"object","required":["event_id","calendar_id"],"title":"GoogleCalendarEventDeleteRequest"},"GoogleCalendarEventDeleteResponse":{"properties":{"deleted":{"type":"boolean","title":"Deleted","default":true},"event_id":{"type":"string","title":"Event Id"},"account":{"type":"string","minLength":1,"title":"Account"}},"type":"object","required":["event_id","account"],"title":"GoogleCalendarEventDeleteResponse"},"GoogleCalendarEventTime":{"properties":{"date_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Time"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"}},"type":"object","title":"GoogleCalendarEventTime"},"GoogleCalendarEventUpdateRequest":{"properties":{"event_id":{"type":"string","title":"Event Id"},"calendar_id":{"type":"string","minLength":1,"title":"Calendar Id"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start"},"end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location"},"attendees":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Attendees"},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"},"account":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Account"},"recurrence":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Recurrence"}},"type":"object","required":["event_id","calendar_id"],"title":"GoogleCalendarEventUpdateRequest"},"GoogleCalendarEventsListRequest":{"properties":{"calendar_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Calendar Id"},"time_min":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Min"},"time_max":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Max"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"},"max_results":{"type":"integer","title":"Max Results","default":20},"account":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Account"}},"type":"object","title":"GoogleCalendarEventsListRequest"},"GoogleCalendarEventsListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GoogleCalendarEvent"},"type":"array","title":"Items","default":[]},"summary":{"type":"string","title":"Summary","default":""},"time_zone":{"type":"string","title":"Time Zone","default":""}},"type":"object","title":"GoogleCalendarEventsListResponse","description":"Parsed events.list response."},"GoogleCalendarFreeBusyCalendar":{"properties":{"busy":{"items":{"$ref":"#/components/schemas/GoogleCalendarTimeWindow"},"type":"array","title":"Busy","default":[]},"errors":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Errors","default":[]}},"type":"object","title":"GoogleCalendarFreeBusyCalendar"},"GoogleCalendarFreeBusyRequest":{"properties":{"calendar_ids":{"anyOf":[{"items":{"type":"string","minLength":1},"type":"array","minItems":1},{"type":"null"}],"title":"Calendar Ids"},"time_min":{"type":"string","title":"Time Min"},"time_max":{"type":"string","title":"Time Max"},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone"},"account":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Account"}},"type":"object","required":["time_min","time_max"],"title":"GoogleCalendarFreeBusyRequest"},"GoogleCalendarFreeBusyResponse":{"properties":{"time_min":{"type":"string","title":"Time Min","default":""},"time_max":{"type":"string","title":"Time Max","default":""},"calendars":{"additionalProperties":{"$ref":"#/components/schemas/GoogleCalendarFreeBusyCalendar"},"type":"object","title":"Calendars","default":{}},"account":{"type":"string","minLength":1,"title":"Account"},"free_windows":{"items":{"$ref":"#/components/schemas/GoogleCalendarTimeWindow"},"type":"array","title":"Free Windows","default":[]}},"type":"object","required":["account"],"title":"GoogleCalendarFreeBusyResponse"},"GoogleCalendarListRequest":{"properties":{"account":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Account"}},"type":"object","title":"GoogleCalendarListRequest"},"GoogleCalendarListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GoogleCalendarEntry"},"type":"array","title":"Items","default":[]}},"type":"object","title":"GoogleCalendarListResponse","description":"Parsed calendarList.list response."},"GoogleCalendarTimeWindow":{"properties":{"start":{"type":"string","title":"Start"},"end":{"type":"string","title":"End"}},"type":"object","required":["start","end"],"title":"GoogleCalendarTimeWindow","description":"A time interval (UTC ISO 8601 strings). Used uniformly for the busy\nblocks Google returns and for the deterministic free-window complement —\none shape on both sides of the API/router/agent boundary so consumers\ndon't have to special-case dict-vs-attribute access."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InboundSelfRequest":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"InboundSelfRequest"},"InboundSelfResponse":{"properties":{"message_id":{"type":"string","title":"Message Id"},"chat_id":{"type":"string","title":"Chat Id"},"delivered":{"type":"boolean","title":"Delivered"}},"type":"object","required":["message_id","chat_id","delivered"],"title":"InboundSelfResponse"},"KeyInfo":{"properties":{"id":{"type":"integer","title":"Id"},"key_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Prefix"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"tokens_used":{"type":"integer","title":"Tokens Used"},"is_active":{"type":"boolean","title":"Is Active"},"last_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Seen At"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","key_prefix","name","scopes","tokens_used","is_active"],"title":"KeyInfo"},"LineListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/LineResource"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","description":"Always `false` today — the lines endpoint returns the full pool and does not paginate. Present for envelope consistency with other list responses so client code can ignore the resource type."},"url":{"type":"string","title":"Url","description":"Base resource URL for this list. Does NOT include pagination params — it's a resource-cache key, not a unique-page-URL."}},"additionalProperties":false,"type":"object","required":["data","has_more","url"],"title":"LineListResponse"},"LineResource":{"properties":{"uid":{"type":"string","title":"Uid"},"object":{"type":"string","const":"line","title":"Object","default":"line"},"provider_type":{"type":"string","const":"imessage","title":"Provider Type","description":"Public messaging channel. Only `imessage` is provisioned today (with SMS fallback for non-iOS recipients, handled transparently by the underlying vendor)."},"provider_key":{"type":"string","title":"Provider Key","description":"Our address on this channel — the phone number recipients see messages coming from (e.g. `+15555550101` for iMessage)."}},"additionalProperties":false,"type":"object","required":["uid","provider_type","provider_key"],"title":"LineResource"},"LockRequest":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"}},"type":"object","required":["name","email"],"title":"LockRequest"},"LockResponse":{"properties":{"checkout_url":{"type":"string","title":"Checkout Url"},"lock_token":{"type":"string","title":"Lock Token"},"spot_number":{"type":"integer","title":"Spot Number"}},"type":"object","required":["checkout_url","lock_token","spot_number"],"title":"LockResponse"},"MessageCreateRequest":{"properties":{"body":{"type":"string","minLength":1,"title":"Body"}},"additionalProperties":false,"type":"object","required":["body"],"title":"MessageCreateRequest"},"MessageListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","default":"list"},"data":{"items":{"$ref":"#/components/schemas/MessageResource"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More","description":"True when more messages exist beyond this page. Build the next page by passing the last `data[].uid` as `starting_after`."},"url":{"type":"string","title":"Url","description":"Base resource URL for this list. Does NOT include pagination params — it's a resource-cache key, not a unique-page-URL."}},"additionalProperties":false,"type":"object","required":["data","has_more","url"],"title":"MessageListResponse"},"MessageResource":{"properties":{"uid":{"type":"string","title":"Uid"},"object":{"type":"string","const":"message","title":"Object","default":"message"},"chat_uid":{"type":"string","title":"Chat Uid"},"direction":{"type":"string","enum":["outbound","inbound"],"title":"Direction"},"body":{"type":"string","title":"Body"},"status":{"type":"string","enum":["sent","delivered","received","failed"],"title":"Status"},"sender":{"oneOf":[{"$ref":"#/components/schemas/MessageSenderAgent"},{"$ref":"#/components/schemas/MessageSenderMember"}],"title":"Sender","discriminator":{"propertyName":"type","mapping":{"agent":"#/components/schemas/MessageSenderAgent","member":"#/components/schemas/MessageSenderMember"}}},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"additionalProperties":false,"type":"object","required":["uid","chat_uid","direction","body","status","sender","created_at"],"title":"MessageResource"},"MessageSenderAgent":{"properties":{"type":{"type":"string","const":"agent","title":"Type","default":"agent"},"line":{"$ref":"#/components/schemas/LineResource"}},"additionalProperties":false,"type":"object","required":["line"],"title":"MessageSenderAgent","description":"Outbound messages: the chat's line itself is the sender. No participant\nuid — there is no `chat_participant` row for the agent (it is derived\nfrom `chat.line_id`), so it is not addressable like a member, even\nthough it always appears in `chat.participants[]`."},"MessageSenderMember":{"properties":{"type":{"type":"string","const":"member","title":"Type","default":"member"},"uid":{"type":"string","title":"Uid","description":"The `chat_participant.uid` of the verified member who sent this message."},"display_name":{"type":"string","title":"Display Name"},"provider_key":{"type":"string","title":"Provider Key","description":"Member's own messaging address on the chat's line (e.g. phone number for iMessage)."}},"additionalProperties":false,"type":"object","required":["uid","display_name","provider_key"],"title":"MessageSenderMember","description":"Inbound messages: a verified member of the chat. `provider_key` is the\nmember's messaging address (e.g. phone number on iMessage) and is always\nnon-null — inbound messages only route to verified members, who always\nhave a bound `provider_key` by construction (`build_message_resource`\nenforces this)."},"ModelInfo":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"contextWindow":{"type":"integer","title":"Contextwindow"},"maxOutputTokens":{"type":"integer","title":"Maxoutputtokens"},"input":{"items":{"type":"string"},"type":"array","title":"Input"}},"type":"object","required":["id","name","contextWindow","maxOutputTokens","input"],"title":"ModelInfo"},"ModelPreferenceBody":{"properties":{"uses_plow_proxy":{"type":"boolean","title":"Uses Plow Proxy","default":true}},"type":"object","title":"ModelPreferenceBody"},"ModelUsage":{"properties":{"model":{"type":"string","title":"Model"},"tokens":{"type":"integer","title":"Tokens"},"cost_usd":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Cost Usd"}},"type":"object","required":["model","tokens","cost_usd"],"title":"ModelUsage"},"ModelsListResponse":{"properties":{"models":{"items":{"$ref":"#/components/schemas/ModelInfo"},"type":"array","title":"Models"},"defaultModel":{"type":"string","title":"Defaultmodel"}},"type":"object","required":["models","defaultModel"],"title":"ModelsListResponse"},"OpsEventReport":{"properties":{"kind":{"type":"string","pattern":"^[a-z0-9-]{1,64}$","title":"Kind","description":"Stable event slug, e.g. 'runtime-restart'"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"app_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Version"},"openclaw_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Openclaw Version"}},"type":"object","required":["kind"],"title":"OpsEventReport"},"OtpRequestPayload":{"properties":{"phone":{"type":"string","title":"Phone"}},"type":"object","required":["phone"],"title":"OtpRequestPayload"},"OtpRequestResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true}},"type":"object","title":"OtpRequestResponse"},"OtpVerifyPayload":{"properties":{"phone":{"type":"string","title":"Phone"},"code":{"type":"string","title":"Code"}},"type":"object","required":["phone","code"],"title":"OtpVerifyPayload"},"OtpVerifyResponse":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"OtpVerifyResponse"},"OwnerIdentityResponse":{"properties":{"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"phones":{"items":{"type":"string"},"type":"array","title":"Phones"},"emails":{"items":{"type":"string"},"type":"array","title":"Emails"}},"type":"object","required":["display_name","phones","emails"],"title":"OwnerIdentityResponse"},"ParticipatePatchRequest":{"properties":{"participate_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Participate Enabled"},"participate_dm_allowlist":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Participate Dm Allowlist"}},"type":"object","title":"ParticipatePatchRequest"},"ProfileResponse":{"properties":{"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"}},"type":"object","required":["display_name"],"title":"ProfileResponse"},"ProfileUpdateRequest":{"properties":{"display_name":{"type":"string","maxLength":100,"title":"Display Name"}},"type":"object","required":["display_name"],"title":"ProfileUpdateRequest"},"RedeemRequest":{"properties":{"activation_secret":{"type":"string","title":"Activation Secret"}},"type":"object","required":["activation_secret"],"title":"RedeemRequest"},"RequestStatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"local_request_id":{"type":"string","title":"Local Request Id"},"approved_paths":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Approved Paths"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"candidates":{"anyOf":[{"items":{"$ref":"#/components/schemas/FileRequestCandidate"},"type":"array"},{"type":"null"}],"title":"Candidates"}},"type":"object","required":["status","local_request_id"],"title":"RequestStatusResponse"},"RevokeKeyResponse":{"properties":{"status":{"type":"string","title":"Status"},"id":{"type":"integer","title":"Id"}},"type":"object","required":["status","id"],"title":"RevokeKeyResponse"},"SendMessageRequest":{"properties":{"thread_handle":{"type":"string","title":"Thread Handle"},"text":{"type":"string","title":"Text"},"media_urls":{"items":{"type":"string"},"type":"array","title":"Media Urls","default":[]}},"additionalProperties":false,"type":"object","required":["thread_handle","text"],"title":"SendMessageRequest"},"SendMessageResponse":{"properties":{"thread_handle":{"type":"string","title":"Thread Handle"},"message_id":{"type":"string","title":"Message Id"},"chat_id":{"type":"string","title":"Chat Id"},"delivery_status":{"type":"string","title":"Delivery Status"}},"type":"object","required":["thread_handle","message_id","chat_id","delivery_status"],"title":"SendMessageResponse"},"SetDefaultResponse":{"properties":{"status":{"type":"string","title":"Status"},"connector":{"type":"string","title":"Connector"},"account":{"type":"string","title":"Account"}},"type":"object","required":["status","connector","account"],"title":"SetDefaultResponse"},"SlackChannel":{"properties":{"id":{"type":"string","title":"Id","default":""},"name":{"type":"string","title":"Name","default":""},"is_private":{"type":"boolean","title":"Is Private","default":false},"num_members":{"type":"integer","title":"Num Members","default":0}},"type":"object","title":"SlackChannel"},"SlackChannelsListRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"},"limit":{"type":"integer","title":"Limit","default":100}},"type":"object","required":["account"],"title":"SlackChannelsListRequest"},"SlackConversationOpenResult":{"properties":{"channel_id":{"type":"string","title":"Channel Id"}},"type":"object","required":["channel_id"],"title":"SlackConversationOpenResult"},"SlackConversationsOpenRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"},"user_id":{"type":"string","title":"User Id"}},"type":"object","required":["account","user_id"],"title":"SlackConversationsOpenRequest"},"SlackFileUploadRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"},"channel_id":{"type":"string","title":"Channel Id"},"filename":{"type":"string","title":"Filename"},"data_base64":{"type":"string","title":"Data Base64"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"thread_ts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thread Ts"},"initial_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Comment"}},"type":"object","required":["account","channel_id","filename","data_base64"],"title":"SlackFileUploadRequest"},"SlackFileUploadResult":{"properties":{"file_id":{"type":"string","title":"File Id"},"channel":{"type":"string","title":"Channel"}},"type":"object","required":["file_id","channel"],"title":"SlackFileUploadResult"},"SlackMessage":{"properties":{"ts":{"type":"string","title":"Ts","default":""},"user":{"type":"string","title":"User","default":""},"text":{"type":"string","title":"Text","default":""},"thread_ts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thread Ts"}},"type":"object","title":"SlackMessage"},"SlackMessagesListRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"},"channel_id":{"type":"string","title":"Channel Id"},"limit":{"type":"integer","title":"Limit","default":20},"cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},"type":"object","required":["account","channel_id"],"title":"SlackMessagesListRequest"},"SlackMessagesSendRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"},"channel_id":{"type":"string","title":"Channel Id"},"text":{"type":"string","title":"Text"},"thread_ts":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thread Ts"}},"type":"object","required":["account","channel_id","text"],"title":"SlackMessagesSendRequest"},"SlackMessagesUpdateRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"},"channel_id":{"type":"string","title":"Channel Id"},"ts":{"type":"string","title":"Ts"},"text":{"type":"string","title":"Text"}},"type":"object","required":["account","channel_id","ts","text"],"title":"SlackMessagesUpdateRequest"},"SlackSearchRequest":{"properties":{"account":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Account"},"query":{"type":"string","title":"Query"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","description":"Per-workspace result cap. In fan-out mode (account=None) the merged response can return up to limit × number_of_connected_workspaces results.","default":20}},"type":"object","required":["query"],"title":"SlackSearchRequest"},"SlackSearchResult":{"properties":{"ts":{"type":"string","title":"Ts"},"channel_id":{"type":"string","title":"Channel Id"},"channel_name":{"type":"string","title":"Channel Name"},"user":{"type":"string","title":"User"},"text":{"type":"string","title":"Text"},"permalink":{"type":"string","title":"Permalink"}},"type":"object","required":["ts","channel_id","channel_name","user","text","permalink"],"title":"SlackSearchResult"},"SlackSendResult":{"properties":{"ts":{"type":"string","title":"Ts"},"channel":{"type":"string","title":"Channel"}},"type":"object","required":["ts","channel"],"title":"SlackSendResult"},"SlackUser":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"real_name":{"type":"string","title":"Real Name","default":""},"is_bot":{"type":"boolean","title":"Is Bot","default":false},"email":{"type":"string","title":"Email","default":""}},"type":"object","required":["id","name"],"title":"SlackUser"},"SlackUsersListRequest":{"properties":{"account":{"type":"string","minLength":1,"title":"Account"},"limit":{"type":"integer","title":"Limit","default":100}},"type":"object","required":["account"],"title":"SlackUsersListRequest"},"SpotPublic":{"properties":{"spot_number":{"type":"integer","title":"Spot Number"},"status":{"type":"string","title":"Status"},"claimed_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claimed By Name"},"claimed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claimed At"}},"type":"object","required":["spot_number","status"],"title":"SpotPublic"},"SpotsResponse":{"properties":{"spots":{"items":{"$ref":"#/components/schemas/SpotPublic"},"type":"array","title":"Spots"}},"type":"object","required":["spots"],"title":"SpotsResponse"},"SystemMessageBody":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"SystemMessageBody"},"ToolsManifestResponse":{"properties":{"active_connectors":{"items":{"type":"string"},"type":"array","title":"Active Connectors"},"content":{"type":"string","title":"Content"}},"type":"object","required":["active_connectors","content"],"title":"ToolsManifestResponse"},"TranscriptionResponse":{"properties":{"transcript":{"type":"string","title":"Transcript"},"duration_secs":{"type":"number","title":"Duration Secs"},"word_count":{"type":"integer","title":"Word Count"},"speaker_count":{"type":"integer","title":"Speaker Count"}},"type":"object","required":["transcript","duration_secs","word_count","speaker_count"],"title":"TranscriptionResponse"},"TypingIndicatorRequest":{"properties":{"chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Id"},"action":{"type":"string","title":"Action","default":"start"}},"type":"object","title":"TypingIndicatorRequest"},"TypingIndicatorResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"chat_id":{"type":"string","title":"Chat Id"},"action":{"type":"string","title":"Action"}},"type":"object","required":["ok","chat_id","action"],"title":"TypingIndicatorResponse"},"UsageResponse":{"properties":{"total_tokens":{"type":"integer","title":"Total Tokens"},"total_spend_usd":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Spend Usd"},"available_balance_usd":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Available Balance Usd"},"by_model":{"items":{"$ref":"#/components/schemas/ModelUsage"},"type":"array","title":"By Model"},"recent":{"items":{"$ref":"#/components/schemas/DailyUsage"},"type":"array","title":"Recent"}},"type":"object","required":["total_tokens","total_spend_usd","available_balance_usd","by_model","recent"],"title":"UsageResponse"},"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"},"VipThreadDeleteResponse":{"properties":{"phone":{"type":"string","title":"Phone"},"removed":{"type":"boolean","title":"Removed"}},"type":"object","required":["phone","removed"],"title":"VipThreadDeleteResponse"},"VipThreadEntry":{"properties":{"phone":{"type":"string","title":"Phone"}},"type":"object","required":["phone"],"title":"VipThreadEntry"},"VipThreadSetupRequest":{"properties":{"display_name":{"type":"string","title":"Display Name","default":""}},"type":"object","title":"VipThreadSetupRequest"},"VipThreadSetupResponse":{"properties":{"phone":{"type":"string","title":"Phone"},"display_name":{"type":"string","title":"Display Name"},"thread_outcome":{"type":"string","title":"Thread Outcome"}},"type":"object","required":["phone","display_name","thread_outcome"],"title":"VipThreadSetupResponse"},"VipThreadsListResponse":{"properties":{"vips":{"items":{"$ref":"#/components/schemas/VipThreadEntry"},"type":"array","title":"Vips"}},"type":"object","required":["vips"],"title":"VipThreadsListResponse"},"WaitlistRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"WaitlistRequest"},"WaitlistResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"WaitlistResponse"},"WsTicketRequest":{"properties":{"chat_id":{"type":"string","title":"Chat Id","description":"`Chat.uid` (e.g. `cht_…`) the ticket should authorize."}},"additionalProperties":false,"type":"object","required":["chat_id"],"title":"WsTicketRequest"},"WsTicketResponse":{"properties":{"object":{"type":"string","const":"ws_ticket","title":"Object","default":"ws_ticket"},"ticket":{"type":"string","title":"Ticket"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"additionalProperties":false,"type":"object","required":["ticket","expires_at"],"title":"WsTicketResponse"},"ParticipantVerifiedFrameParticipant":{"additionalProperties":false,"description":"Body of `participant_verified.participant`.","properties":{"type":{"const":"member","default":"member","title":"Type","type":"string"},"uid":{"title":"Uid","type":"string"},"display_name":{"title":"Display Name","type":"string"},"provider_key":{"title":"Provider Key","type":"string"},"joined_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Joined At"}},"required":["uid","display_name","provider_key","joined_at"],"title":"ParticipantVerifiedFrameParticipant","type":"object"},"ParticipantVerifiedFrame":{"additionalProperties":false,"description":"Fires when a member transitions from `pending_verification` to `active`.\nOnly fires for `member` participants — the agent has no `chat_participant`\nDB row (and so no verification state), even though it is always present\nin `chat.participants[]`.","properties":{"type":{"const":"participant_verified","default":"participant_verified","title":"Type","type":"string"},"participant":{"$ref":"#/components/schemas/ParticipantVerifiedFrameParticipant"}},"required":["participant"],"title":"ParticipantVerifiedFrame","type":"object"},"ChatActiveFrameChat":{"additionalProperties":false,"description":"Body of `chat_active.chat`. `provider_key` is non-null at this point —\n`activate_chat` binds the messaging-thread id in the same step that flips\nthe chat to `active`.","properties":{"uid":{"title":"Uid","type":"string"},"status":{"const":"active","default":"active","title":"Status","type":"string"},"provider_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Key"}},"required":["uid","provider_key"],"title":"ChatActiveFrameChat","type":"object"},"ChatActiveFrame":{"additionalProperties":false,"description":"Fires when the chat transitions to `active` (every member verified, or\na duplicate-identity cleanup drained the last pending row).","properties":{"type":{"const":"chat_active","default":"chat_active","title":"Type","type":"string"},"chat":{"$ref":"#/components/schemas/ChatActiveFrameChat"}},"required":["chat"],"title":"ChatActiveFrame","type":"object"},"ChatActivationFailedFrame":{"additionalProperties":false,"description":"Fires when every member verified but the chat itself can't activate.\nReasons: `line_collision_on_activation` (the messaging thread the provider\nreturned is already owned by another chat on this line) and\n`provider_error` (the provider SDK raised during the activation round-\ntrip). The chat lands at `status='failed'` (NOT soft-deleted); recovery is\n`DELETE /v1/chats/{uid}` + recreate.","properties":{"type":{"const":"chat_activation_failed","default":"chat_activation_failed","title":"Type","type":"string"},"reason":{"enum":["line_collision_on_activation","provider_error"],"title":"Reason","type":"string"},"message":{"title":"Message","type":"string"}},"required":["reason","message"],"title":"ChatActivationFailedFrame","type":"object"},"MessageReceivedFrame":{"additionalProperties":false,"description":"Fires for every message in the chat, both inbound from members and\noutbound echoes of API-driven sends. `direction` on the embedded message\ndistinguishes.","properties":{"type":{"const":"message_received","default":"message_received","title":"Type","type":"string"},"message":{"$ref":"#/components/schemas/MessageResource"}},"required":["message"],"title":"MessageReceivedFrame","type":"object"},"MessageStatusUpdatedFrameMessage":{"additionalProperties":false,"description":"Body of `message_status_updated.message` — a delta payload, not a full\n`MessageResource`.","properties":{"uid":{"title":"Uid","type":"string"},"status":{"enum":["sent","delivered","received","failed"],"title":"Status","type":"string"},"updated_at":{"format":"date-time","title":"Updated At","type":"string"}},"required":["uid","status","updated_at"],"title":"MessageStatusUpdatedFrameMessage","type":"object"},"MessageStatusUpdatedFrame":{"additionalProperties":false,"description":"Fires when a provider delivery callback transitions an outbound\nmessage's lifecycle. Carries only the changed fields plus the message\n`uid` for correlation.","properties":{"type":{"const":"message_status_updated","default":"message_status_updated","title":"Type","type":"string"},"message":{"$ref":"#/components/schemas/MessageStatusUpdatedFrameMessage"}},"required":["message"],"title":"MessageStatusUpdatedFrame","type":"object"},"WebSocketFrame":{"discriminator":{"mapping":{"chat_activation_failed":"#/components/schemas/ChatActivationFailedFrame","chat_active":"#/components/schemas/ChatActiveFrame","message_received":"#/components/schemas/MessageReceivedFrame","message_status_updated":"#/components/schemas/MessageStatusUpdatedFrame","participant_verified":"#/components/schemas/ParticipantVerifiedFrame"},"propertyName":"type"},"oneOf":[{"$ref":"#/components/schemas/ParticipantVerifiedFrame"},{"$ref":"#/components/schemas/ChatActiveFrame"},{"$ref":"#/components/schemas/ChatActivationFailedFrame"},{"$ref":"#/components/schemas/MessageReceivedFrame"},{"$ref":"#/components/schemas/MessageStatusUpdatedFrame"}]}}}}