{"openapi":"3.1.0","info":{"title":"MagicBell API","description":"OpenAPI 3.1.0 Specification for MagicBell API.","contact":{"name":"MagicBell","url":"https://wwww.magicbell.com"},"version":"2.0.0"},"jsonSchemaDialect":"http://json-schema.org/draft-07/schema#","servers":[{"url":"https://api.magicbell.com/v2","description":"MagicBell API (v2) Base URL"}],"paths":{"/channels/in_app/inbox/tokens":{"summary":"Inbox token","description":"Scoped APIs for Inbox (`inbox`).","get":{"tags":["channels","in_app","inbox"],"summary":"List all Inbox tokens","description":"Lists all Inbox tokens belonging to the authenticated user. Returns a paginated list of tokens, including their status, creation dates, and associated metadata.","operationId":"list_inbox_tokens","parameters":[{"name":"limit","in":"query","description":"defines the maximum number of items to return per page (default: 50)","required":false,"schema":{"type":"integer"}},{"name":"starting_after","in":"query","description":"a cursor for use in pagination, points to the last ID in previous page","required":false,"schema":{"type":"string"}},{"name":"ending_before","in":"query","description":"a cursor for use in pagination, points to the first ID in next page","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxTokenResponseCollection"}}}}},"x-magicbell-auth-jwt-type":"user"},"put":{"tags":["channels","in_app","inbox"],"summary":"Save an Inbox token","description":"Saves the Inbox token for the authenticated user. This token serves as a credential for accessing channel-specific functionality. Each token is unique to the user and channel combination, allowing for direct communication with the user via the channel.","operationId":"save_inbox_token","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxToken"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxToken"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/in_app/inbox/tokens/{token_id}":{"summary":"Inbox token","description":"Scoped APIs for Inbox (`inbox`).","get":{"tags":["channels","in_app","inbox"],"summary":"Fetch an Inbox token","description":"Fetches details of a specific Inbox token belonging to the authenticated user. Returns information about the token's status, creation date, and any associated metadata. Users can only access their own tokens.","operationId":"fetch_inbox_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxTokenResponse"}}}}},"x-magicbell-auth-jwt-type":"user"},"delete":{"tags":["channels","in_app","inbox"],"summary":"Delete an Inbox token","description":"Deletes one of the authenticated user's Inbox tokens. This permanently invalidates the specified token, preventing it from being used for future channel access. This action cannot be undone. Users can only revoke their own tokens.","operationId":"delete_inbox_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscardResult"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/mobile_push/apns/tokens":{"summary":"APNs token","description":"Scoped APIs for APNs (`apns`).","get":{"tags":["channels","mobile_push","apns"],"summary":"List all APNs tokens","description":"Lists all APNs tokens belonging to the authenticated user. Returns a paginated list of tokens, including their status, creation dates, and associated metadata.","operationId":"list_apns_tokens","parameters":[{"name":"limit","in":"query","description":"defines the maximum number of items to return per page (default: 50)","required":false,"schema":{"type":"integer"}},{"name":"starting_after","in":"query","description":"a cursor for use in pagination, points to the last ID in previous page","required":false,"schema":{"type":"string"}},{"name":"ending_before","in":"query","description":"a cursor for use in pagination, points to the first ID in next page","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APNSTokenCollection"}}}}},"x-magicbell-auth-jwt-type":"user"},"put":{"tags":["channels","mobile_push","apns"],"summary":"Save an APNs token","description":"Saves the APNs token for the authenticated user. This token serves as a credential for accessing channel-specific functionality. Each token is unique to the user and channel combination, allowing for direct communication with the user via the channel.","operationId":"save_apns_token","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APNSTokenPayload"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APNSTokenPayload"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/mobile_push/apns/tokens/{token_id}":{"summary":"APNs token","description":"Scoped APIs for APNs (`apns`).","get":{"tags":["channels","mobile_push","apns"],"summary":"Fetch an APNs token","description":"Fetches details of a specific APNs token belonging to the authenticated user. Returns information about the token's status, creation date, and any associated metadata. Users can only access their own tokens.","operationId":"fetch_apns_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APNSToken"}}}}},"x-magicbell-auth-jwt-type":"user"},"delete":{"tags":["channels","mobile_push","apns"],"summary":"Delete an APNs token","description":"Deletes one of the authenticated user's APNs tokens. This permanently invalidates the specified token, preventing it from being used for future channel access. This action cannot be undone. Users can only revoke their own tokens.","operationId":"delete_apns_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscardResult"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/mobile_push/expo/tokens":{"summary":"Expo token","description":"Scoped APIs for Expo (`expo`).","get":{"tags":["channels","mobile_push","expo"],"summary":"List all Expo tokens","description":"Lists all Expo tokens belonging to the authenticated user. Returns a paginated list of tokens, including their status, creation dates, and associated metadata.","operationId":"list_expo_tokens","parameters":[{"name":"limit","in":"query","description":"defines the maximum number of items to return per page (default: 50)","required":false,"schema":{"type":"integer"}},{"name":"starting_after","in":"query","description":"a cursor for use in pagination, points to the last ID in previous page","required":false,"schema":{"type":"string"}},{"name":"ending_before","in":"query","description":"a cursor for use in pagination, points to the first ID in next page","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpoTokenCollection"}}}}},"x-magicbell-auth-jwt-type":"user"},"put":{"tags":["channels","mobile_push","expo"],"summary":"Save an Expo token","description":"Saves the Expo token for the authenticated user. This token serves as a credential for accessing channel-specific functionality. Each token is unique to the user and channel combination, allowing for direct communication with the user via the channel.","operationId":"save_expo_token","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpoTokenPayload"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpoTokenPayload"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/mobile_push/expo/tokens/{token_id}":{"summary":"Expo token","description":"Scoped APIs for Expo (`expo`).","get":{"tags":["channels","mobile_push","expo"],"summary":"Fetch an Expo token","description":"Fetches details of a specific Expo token belonging to the authenticated user. Returns information about the token's status, creation date, and any associated metadata. Users can only access their own tokens.","operationId":"fetch_expo_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpoToken"}}}}},"x-magicbell-auth-jwt-type":"user"},"delete":{"tags":["channels","mobile_push","expo"],"summary":"Delete an Expo token","description":"Deletes one of the authenticated user's Expo tokens. This permanently invalidates the specified token, preventing it from being used for future channel access. This action cannot be undone. Users can only revoke their own tokens.","operationId":"delete_expo_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscardResult"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/mobile_push/fcm/tokens":{"summary":"FCM token","description":"Scoped APIs for FCM (`fcm`).","get":{"tags":["channels","mobile_push","fcm"],"summary":"List all FCM tokens","description":"Lists all FCM tokens belonging to the authenticated user. Returns a paginated list of tokens, including their status, creation dates, and associated metadata.","operationId":"list_fcm_tokens","parameters":[{"name":"limit","in":"query","description":"defines the maximum number of items to return per page (default: 50)","required":false,"schema":{"type":"integer"}},{"name":"starting_after","in":"query","description":"a cursor for use in pagination, points to the last ID in previous page","required":false,"schema":{"type":"string"}},{"name":"ending_before","in":"query","description":"a cursor for use in pagination, points to the first ID in next page","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FCMTokenCollection"}}}}},"x-magicbell-auth-jwt-type":"user"},"put":{"tags":["channels","mobile_push","fcm"],"summary":"Save a FCM token","description":"Saves the FCM token for the authenticated user. This token serves as a credential for accessing channel-specific functionality. Each token is unique to the user and channel combination, allowing for direct communication with the user via the channel.","operationId":"save_fcm_token","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FCMTokenPayload"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FCMTokenPayload"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/mobile_push/fcm/tokens/{token_id}":{"summary":"FCM token","description":"Scoped APIs for FCM (`fcm`).","get":{"tags":["channels","mobile_push","fcm"],"summary":"Fetch a FCM token","description":"Fetches details of a specific FCM token belonging to the authenticated user. Returns information about the token's status, creation date, and any associated metadata. Users can only access their own tokens.","operationId":"fetch_fcm_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FCMToken"}}}}},"x-magicbell-auth-jwt-type":"user"},"delete":{"tags":["channels","mobile_push","fcm"],"summary":"Delete a FCM token","description":"Deletes one of the authenticated user's FCM tokens. This permanently invalidates the specified token, preventing it from being used for future channel access. This action cannot be undone. Users can only revoke their own tokens.","operationId":"delete_fcm_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscardResult"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/slack/magicbell_slackbot/tokens":{"summary":"MagicBell SlackBot token","description":"Scoped APIs for MagicBell SlackBot (`magicbell_slackbot`).","get":{"tags":["channels","slack","magicbell_slackbot"],"summary":"List all MagicBell SlackBot tokens","description":"Lists all MagicBell SlackBot tokens belonging to the authenticated user. Returns a paginated list of tokens, including their status, creation dates, and associated metadata.","operationId":"list_magicbell_slackbot_tokens","parameters":[{"name":"limit","in":"query","description":"defines the maximum number of items to return per page (default: 50)","required":false,"schema":{"type":"integer"}},{"name":"starting_after","in":"query","description":"a cursor for use in pagination, points to the last ID in previous page","required":false,"schema":{"type":"string"}},{"name":"ending_before","in":"query","description":"a cursor for use in pagination, points to the first ID in next page","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackTokenCollection"}}}}},"x-magicbell-auth-jwt-type":"user"},"put":{"tags":["channels","slack","magicbell_slackbot"],"summary":"Save a MagicBell SlackBot token","description":"Saves the MagicBell SlackBot token for the authenticated user. This token serves as a credential for accessing channel-specific functionality. Each token is unique to the user and channel combination, allowing for direct communication with the user via the channel.","operationId":"save_magicbell_slackbot_token","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackTokenPayload"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackTokenPayload"}}}}},"x-forbid-unknown-cookie":true,"x-forbid-unknown-header":true,"x-forbid-unknown-path":true,"x-forbid-unknown-query":true,"x-magicbell-auth-jwt-type":"user"}},"/channels/slack/magicbell_slackbot/tokens/{token_id}":{"summary":"MagicBell SlackBot token","description":"Scoped APIs for MagicBell SlackBot (`magicbell_slackbot`).","get":{"tags":["channels","slack","magicbell_slackbot"],"summary":"Fetch a MagicBell SlackBot token","description":"Fetches details of a specific MagicBell SlackBot token belonging to the authenticated user. Returns information about the token's status, creation date, and any associated metadata. Users can only access their own tokens.","operationId":"fetch_magicbell_slackbot_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackToken"}}}}},"x-magicbell-auth-jwt-type":"user"},"delete":{"tags":["channels","slack","magicbell_slackbot"],"summary":"Delete a MagicBell SlackBot token","description":"Deletes one of the authenticated user's MagicBell SlackBot tokens. This permanently invalidates the specified token, preventing it from being used for future channel access. This action cannot be undone. Users can only revoke their own tokens.","operationId":"delete_magicbell_slackbot_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscardResult"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/slack/tokens":{"summary":"Slack tokens","description":"Tokens tie a user to their Slack destination—devices, inboxes, or workspaces. Register them at login, list them for debugging, and revoke stale entries to keep delivery healthy.","get":{"tags":["channels","slack"],"summary":"List all Slack tokens","description":"Lists all Slack tokens belonging to the authenticated user. Returns a paginated list of tokens, including their status, creation dates, and associated metadata.","operationId":"list_slack_tokens","parameters":[{"name":"limit","in":"query","description":"defines the maximum number of items to return per page (default: 50)","required":false,"schema":{"type":"integer"}},{"name":"starting_after","in":"query","description":"a cursor for use in pagination, points to the last ID in previous page","required":false,"schema":{"type":"string"}},{"name":"ending_before","in":"query","description":"a cursor for use in pagination, points to the first ID in next page","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackTokenCollection"}}}}},"x-magicbell-auth-jwt-type":"user"},"put":{"tags":["channels","slack"],"summary":"Save a Slack token","description":"Saves the Slack token for the authenticated user. This token serves as a credential for accessing channel-specific functionality. Each token is unique to the user and channel combination, allowing for direct communication with the user via the channel.","operationId":"save_slack_token","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackTokenPayload"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackTokenPayload"}}}}},"x-forbid-unknown-cookie":true,"x-forbid-unknown-header":true,"x-forbid-unknown-path":true,"x-forbid-unknown-query":true,"x-magicbell-auth-jwt-type":"user"}},"/channels/slack/tokens/{token_id}":{"summary":"Slack tokens","description":"Tokens tie a user to their Slack destination—devices, inboxes, or workspaces. Register them at login, list them for debugging, and revoke stale entries to keep delivery healthy.","get":{"tags":["channels","slack"],"summary":"Fetch a Slack token","description":"Fetches details of a specific Slack token belonging to the authenticated user. Returns information about the token's status, creation date, and any associated metadata. Users can only access their own tokens.","operationId":"fetch_slack_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackToken"}}}}},"x-magicbell-auth-jwt-type":"user"},"delete":{"tags":["channels","slack"],"summary":"Delete a Slack token","description":"Deletes one of the authenticated user's Slack tokens. This permanently invalidates the specified token, preventing it from being used for future channel access. This action cannot be undone. Users can only revoke their own tokens.","operationId":"delete_slack_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscardResult"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/teams/tokens":{"summary":"Teams tokens","description":"Tokens tie a user to their Teams destination—devices, inboxes, or workspaces. Register them at login, list them for debugging, and revoke stale entries to keep delivery healthy.","get":{"tags":["channels","teams"],"summary":"List all Teams tokens","description":"Lists all Teams tokens belonging to the authenticated user. Returns a paginated list of tokens, including their status, creation dates, and associated metadata.","operationId":"list_teams_tokens","parameters":[{"name":"limit","in":"query","description":"defines the maximum number of items to return per page (default: 50)","required":false,"schema":{"type":"integer"}},{"name":"starting_after","in":"query","description":"a cursor for use in pagination, points to the last ID in previous page","required":false,"schema":{"type":"string"}},{"name":"ending_before","in":"query","description":"a cursor for use in pagination, points to the first ID in next page","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsTokenCollection"}}}}},"x-magicbell-auth-jwt-type":"user"},"put":{"tags":["channels","teams"],"summary":"Save a Teams token","description":"Saves the Teams token for the authenticated user. This token serves as a credential for accessing channel-specific functionality. Each token is unique to the user and channel combination, allowing for direct communication with the user via the channel.","operationId":"save_teams_token","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsTokenPayload"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsTokenPayload"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/teams/tokens/{token_id}":{"summary":"Teams tokens","description":"Tokens tie a user to their Teams destination—devices, inboxes, or workspaces. Register them at login, list them for debugging, and revoke stale entries to keep delivery healthy.","get":{"tags":["channels","teams"],"summary":"Fetch a Teams token","description":"Fetches details of a specific Teams token belonging to the authenticated user. Returns information about the token's status, creation date, and any associated metadata. Users can only access their own tokens.","operationId":"fetch_teams_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamsToken"}}}}},"x-magicbell-auth-jwt-type":"user"},"delete":{"tags":["channels","teams"],"summary":"Delete a Teams token","description":"Deletes one of the authenticated user's Teams tokens. This permanently invalidates the specified token, preventing it from being used for future channel access. This action cannot be undone. Users can only revoke their own tokens.","operationId":"delete_teams_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscardResult"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/user_preferences":{"summary":"Channel preferences","description":"Manages each user's opt-outs and per-channel overrides so every notification respects personal choices across devices and mediums.","get":{"tags":["channels"],"summary":"Fetch channel preferences","description":"Fetch a user's channel delivery preferences.","operationId":"fetch_user_preferences","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPreferences"}}}}},"x-magicbell-auth-jwt-type":"user"},"put":{"tags":["channels"],"summary":"Save channel preferences","description":"Save a user's channel preferences.","operationId":"save_user_preferences","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPreferences"}}}},"responses":{"204":{"description":"No Content"}},"x-magicbell-auth-jwt-type":"user"}},"/channels/web_push/tokens":{"summary":"Web Push tokens","description":"Tokens tie a user to their Web Push destination—devices, inboxes, or workspaces. Register them at login, list them for debugging, and revoke stale entries to keep delivery healthy.","get":{"tags":["channels","web_push"],"summary":"List all Web Push tokens","description":"Lists all Web Push tokens belonging to the authenticated user. Returns a paginated list of tokens, including their status, creation dates, and associated metadata.","operationId":"list_web_push_tokens","parameters":[{"name":"limit","in":"query","description":"defines the maximum number of items to return per page (default: 50)","required":false,"schema":{"type":"integer"}},{"name":"starting_after","in":"query","description":"a cursor for use in pagination, points to the last ID in previous page","required":false,"schema":{"type":"string"}},{"name":"ending_before","in":"query","description":"a cursor for use in pagination, points to the first ID in next page","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebPushTokenCollection"}}}}},"x-magicbell-auth-jwt-type":"user"},"put":{"tags":["channels","web_push"],"summary":"Save a Web Push token","description":"Saves the Web Push token for the authenticated user. This token serves as a credential for accessing channel-specific functionality. Each token is unique to the user and channel combination, allowing for direct communication with the user via the channel.","operationId":"save_web_push_token","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebPushTokenPayload"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebPushTokenPayload"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/channels/web_push/tokens/{token_id}":{"summary":"Web Push tokens","description":"Tokens tie a user to their Web Push destination—devices, inboxes, or workspaces. Register them at login, list them for debugging, and revoke stale entries to keep delivery healthy.","get":{"tags":["channels","web_push"],"summary":"Fetch a Web Push token","description":"Fetches details of a specific Web Push token belonging to the authenticated user. Returns information about the token's status, creation date, and any associated metadata. Users can only access their own tokens.","operationId":"fetch_web_push_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebPushToken"}}}}},"x-magicbell-auth-jwt-type":"user"},"delete":{"tags":["channels","web_push"],"summary":"Delete a Web Push token","description":"Deletes one of the authenticated user's Web Push tokens. This permanently invalidates the specified token, preventing it from being used for future channel access. This action cannot be undone. Users can only revoke their own tokens.","operationId":"delete_web_push_token","parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscardResult"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/integrations/inbox/installations":{"summary":"Installation flow","description":"High-level entry point for integrations that require multi-step authorization.","put":{"tags":["integrations","inbox"],"summary":"Save an Inbox installation","description":"Creates a new installation of a Inbox integration for a user. This endpoint is used when an integration needs to be set up with user-specific credentials or configuration.","operationId":"save_inbox_installation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxConfigPayload"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxConfigPayload"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/integrations/inbox/installations/start":{"summary":"Start installation","description":"Begins the OAuth or credentials handshake for an integration, returning URLs or payloads needed to obtain user consent.","post":{"tags":["integrations","inbox"],"summary":"Start an Inbox installation","description":"Initiates the installation flow for an Inbox integration. This is the first step in a multi-step installation process where user authorization or external service configuration may be required.","operationId":"start_inbox_installation","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxConfigPayload"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/integrations/magicbell_slackbot/installations":{"summary":"Installation flow","description":"High-level entry point for integrations that require multi-step authorization.","put":{"tags":["integrations","magicbell_slackbot"],"summary":"Save a MagicBell SlackBot installation","description":"Creates a new installation of a MagicBell SlackBot integration for a user. This endpoint is used when an integration needs to be set up with user-specific credentials or configuration.","operationId":"save_magicbell_slackbot_installation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallation"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallation"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/integrations/magicbell_slackbot/installations/finish":{"summary":"Finish installation","description":"Completes the installation handshake after the user authorizes access, persisting tokens and validating the external connection.","post":{"tags":["integrations","magicbell_slackbot"],"summary":"Finish a MagicBell SlackBot installation","description":"Completes the installation flow for the MagicBell SlackBot integration. This endpoint is typically called after the user has completed any required authorization steps with MagicBell SlackBot.","operationId":"finish_magicbell_slackbot_installation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackFinishInstallResponse"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallation"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/integrations/magicbell_slackbot/installations/start":{"summary":"Start installation","description":"Begins the OAuth or credentials handshake for an integration, returning URLs or payloads needed to obtain user consent.","post":{"tags":["integrations","magicbell_slackbot"],"summary":"Start a MagicBell SlackBot installation","description":"Initiates the installation flow for a MagicBell SlackBot integration. This is the first step in a multi-step installation process where user authorization or external service configuration may be required.","operationId":"start_magicbell_slackbot_installation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackStartInstall"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackStartInstallResponseContent"}}}}},"x-forbid-unknown-cookie":true,"x-forbid-unknown-header":true,"x-forbid-unknown-path":true,"x-forbid-unknown-query":true,"x-magicbell-auth-jwt-type":"user"}},"/integrations/slack/installations":{"summary":"Installation flow","description":"High-level entry point for integrations that require multi-step authorization.","put":{"tags":["integrations","slack"],"summary":"Save a Slack installation","description":"Creates a new installation of a Slack integration for a user. This endpoint is used when an integration needs to be set up with user-specific credentials or configuration.","operationId":"save_slack_installation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallation"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallation"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/integrations/slack/installations/finish":{"summary":"Finish installation","description":"Completes the installation handshake after the user authorizes access, persisting tokens and validating the external connection.","post":{"tags":["integrations","slack"],"summary":"Finish a Slack installation","description":"Completes the installation flow for the Slack integration. This endpoint is typically called after the user has completed any required authorization steps with Slack.","operationId":"finish_slack_installation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackFinishInstallResponse"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallation"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/integrations/slack/installations/start":{"summary":"Start installation","description":"Begins the OAuth or credentials handshake for an integration, returning URLs or payloads needed to obtain user consent.","post":{"tags":["integrations","slack"],"summary":"Start a Slack installation","description":"Initiates the installation flow for a Slack integration. This is the first step in a multi-step installation process where user authorization or external service configuration may be required.","operationId":"start_slack_installation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackStartInstall"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackStartInstallResponseContent"}}}}},"x-forbid-unknown-cookie":true,"x-forbid-unknown-header":true,"x-forbid-unknown-path":true,"x-forbid-unknown-query":true,"x-magicbell-auth-jwt-type":"user"}},"/integrations/web_push/installations":{"summary":"Installation flow","description":"High-level entry point for integrations that require multi-step authorization.","put":{"tags":["integrations","web_push"],"summary":"Save a Web Push installation","description":"Creates a new installation of a Web Push integration for a user. This endpoint is used when an integration needs to be set up with user-specific credentials or configuration.","operationId":"save_web_push_installation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebPushTokenPayload"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebPushTokenPayload"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/integrations/web_push/installations/start":{"summary":"Start installation","description":"Begins the OAuth or credentials handshake for an integration, returning URLs or payloads needed to obtain user consent.","post":{"tags":["integrations","web_push"],"summary":"Start a Web Push installation","description":"Initiates the installation flow for a Web Push integration. This is the first step in a multi-step installation process where user authorization or external service configuration may be required.","operationId":"start_web_push_installation","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebPushStartInstallationResponse"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/notifications":{"summary":"User notifications","description":"Notifications are the per-recipient records created from broadcasts. These endpoints let a user list, fetch, and manage the notifications that drive their inbox experience.\n\nRelated guides: [Notification Primitive](https://www.magicbell.com/docs/primitive/notification)","get":{"summary":"List all notifications","description":"Lists all notifications for a user.","operationId":"list_notifications","parameters":[{"name":"limit","in":"query","description":"defines the maximum number of items to return per page (default: 50)","required":false,"schema":{"type":"integer"}},{"name":"starting_after","in":"query","description":"a cursor for use in pagination, points to the last ID in previous page","required":false,"schema":{"type":"string"}},{"name":"ending_before","in":"query","description":"a cursor for use in pagination, points to the first ID in next page","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","description":"filter notifications by their read state, one of 'unread' | 'read' | 'archived'","required":false,"schema":{"type":"string"}},{"name":"category","in":"query","description":"filter notifications by their category","required":false,"schema":{"type":"string"}},{"name":"topic","in":"query","description":"filter notifications by their topic","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationCollection"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/notifications/archive":{"summary":"User notifications","description":"Notifications are the per-recipient records created from broadcasts. These endpoints let a user list, fetch, and manage the notifications that drive their inbox experience.\n\nRelated guides: [Notification Primitive](https://www.magicbell.com/docs/primitive/notification)","post":{"summary":"Archive all notifications","description":"Archive all notifications.","operationId":"archive_all_notifications","parameters":[{"name":"category","in":"query","description":"filter notifications by their category","required":false,"schema":{"type":"string"}},{"name":"topic","in":"query","description":"filter notifications by their topic","required":false,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"}},"x-magicbell-auth-jwt-type":"user"}},"/notifications/read":{"summary":"User notifications","description":"Notifications are the per-recipient records created from broadcasts. These endpoints let a user list, fetch, and manage the notifications that drive their inbox experience.\n\nRelated guides: [Notification Primitive](https://www.magicbell.com/docs/primitive/notification)","post":{"summary":"Mark all notifications read","description":"Marks all notifications as read.","operationId":"mark_all_notifications_read","parameters":[{"name":"category","in":"query","description":"filter notifications by their category","required":false,"schema":{"type":"string"}},{"name":"topic","in":"query","description":"filter notifications by their topic","required":false,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"}},"x-magicbell-auth-jwt-type":"user"}},"/notifications/unread/count":{"summary":"User notifications","description":"Notifications are the per-recipient records created from broadcasts. These endpoints let a user list, fetch, and manage the notifications that drive their inbox experience.\n\nRelated guides: [Notification Primitive](https://www.magicbell.com/docs/primitive/notification)","get":{"summary":"Count unread notifications","description":"Returns the count of unread notifications for a user. Supports filtering by category and topic.","operationId":"fetch_unread_notifications_count","parameters":[{"name":"category","in":"query","description":"filter notifications by their category","required":false,"schema":{"type":"string"}},{"name":"topic","in":"query","description":"filter notifications by their topic","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountResponse"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/notifications/{notification_id}":{"summary":"User notifications","description":"Notifications are the per-recipient records created from broadcasts. These endpoints let a user list, fetch, and manage the notifications that drive their inbox experience.\n\nRelated guides: [Notification Primitive](https://www.magicbell.com/docs/primitive/notification)","get":{"summary":"Fetch a notification","description":"Gets a notification by ID.","operationId":"fetch_notification","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Notification"}}}}},"x-magicbell-auth-jwt-type":"user"}},"/notifications/{notification_id}/archive":{"summary":"User notifications","description":"Notifications are the per-recipient records created from broadcasts. These endpoints let a user list, fetch, and manage the notifications that drive their inbox experience.\n\nRelated guides: [Notification Primitive](https://www.magicbell.com/docs/primitive/notification)","post":{"summary":"Archive a notification","description":"Archive a notification.","operationId":"archive_notification","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"}},"x-magicbell-auth-jwt-type":"user"}},"/notifications/{notification_id}/read":{"summary":"User notifications","description":"Notifications are the per-recipient records created from broadcasts. These endpoints let a user list, fetch, and manage the notifications that drive their inbox experience.\n\nRelated guides: [Notification Primitive](https://www.magicbell.com/docs/primitive/notification)","post":{"summary":"Mark a notification read","description":"Marks a notification as read.","operationId":"mark_notification_read","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"}},"x-magicbell-auth-jwt-type":"user"}},"/notifications/{notification_id}/unarchive":{"summary":"User notifications","description":"Notifications are the per-recipient records created from broadcasts. These endpoints let a user list, fetch, and manage the notifications that drive their inbox experience.\n\nRelated guides: [Notification Primitive](https://www.magicbell.com/docs/primitive/notification)","post":{"summary":"Unarchive a notification","description":"Unarchives a notification.","operationId":"unarchive_notification","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"}},"x-magicbell-auth-jwt-type":"user"}},"/notifications/{notification_id}/unread":{"summary":"User notifications","description":"Notifications are the per-recipient records created from broadcasts. These endpoints let a user list, fetch, and manage the notifications that drive their inbox experience.\n\nRelated guides: [Notification Primitive](https://www.magicbell.com/docs/primitive/notification)","post":{"summary":"Mark a notification unread","description":"Marks a notification as unread.","operationId":"mark_notification_unread","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"}},"x-magicbell-auth-jwt-type":"user"}}},"components":{"schemas":{"APNSToken":{"examples":[{"created_at":"2021-01-01T00:00:00Z","device_token":"eH0fLhuiRj2Np7UQ-opXAm:APA91bGtC-wH4sgW1jWkMKIZf7FYkm_RTQb7Jid7DfSJnCgivGYoRzhLrGxpcIF6yPjmbzAr6CKF-6phZkBasFUUfZmfdgcqfA_ZlZdVk6pSnon3LGzMumCzEJE0zgWoo_RUmVUVJUAt","discarded_at":"2021-01-01T00:00:00Z","id":"123","installation_id":"development","updated_at":"2021-01-01T00:00:00Z"}],"properties":{"app_id":{"description":"The bundle identifier of the application registering this token. Use this to override the default identifier configured on the APNs integration.","pattern":"^[a-zA-Z0-9]+(.[a-zA-Z0-9]+)*$","type":"string"},"created_at":{"description":"The timestamp when the token was created.","format":"date-time","type":"string"},"device_token":{"description":"The APNs device token to register with MagicBell.","minLength":64,"type":"string"},"discarded_at":{"description":"The timestamp when the token was discarded, if applicable.","format":"date-time","type":["string","null"]},"id":{"description":"The unique identifier for the token.","type":"string"},"installation_id":{"description":"The APNs environment this token belongs to. If omitted we assume it targets `production`.","enum":["development","production"],"type":"string"},"updated_at":{"description":"The timestamp when the token metadata last changed.","format":"date-time","type":["string","null"]}},"required":["created_at","device_token","id"],"type":"object"},"APNSTokenCollection":{"examples":[{"data":[{"created_at":"2021-01-01T00:00:00Z","device_token":"eH0fLhuiRj2Np7UQ-opXAm:APA91bGtC-wH4sgW1jWkMKIZf7FYkm_RTQb7Jid7DfSJnCgivGYoRzhLrGxpcIF6yPjmbzAr6CKF-6phZkBasFUUfZmfdgcqfA_ZlZdVk6pSnon3LGzMumCzEJE0zgWoo_RUmVUVJUAt","discarded_at":"2021-01-01T00:00:00Z","id":"123","installation_id":"development","updated_at":"2021-01-01T00:00:00Z"}],"links":{"first":"https://api.magicbell.com/v1/example","next":"https://api.magicbell.com/v1/example?page_next=abc","prev":null}}],"properties":{"data":{"items":{"$ref":"#/components/schemas/APNSToken"},"type":"array"},"links":{"$ref":"#/components/schemas/Links"}},"type":"object"},"APNSTokenPayload":{"$schema":"http://json-schema.org/draft-07/schema#","examples":[{"device_token":"eH0fLhuiRj2Np7UQ-opXAm:APA91bGtC-wH4sgW1jWkMKIZf7FYkm_RTQb7Jid7DfSJnCgivGYoRzhLrGxpcIF6yPjmbzAr6CKF-6phZkBasFUUfZmfdgcqfA_ZlZdVk6pSnon3LGzMumCzEJE0zgWoo_RUmVUVJUAt","installation_id":"development"}],"properties":{"app_id":{"description":"The bundle identifier of the application registering this token. Use this to override the default identifier configured on the APNs integration.","pattern":"^[a-zA-Z0-9]+(.[a-zA-Z0-9]+)*$","type":"string"},"device_token":{"description":"The APNs device token to register with MagicBell.","minLength":64,"type":"string"},"installation_id":{"description":"The APNs environment this token belongs to. If omitted we assume it targets `production`.","enum":["development","production"],"type":"string"}},"required":["device_token"],"type":"object"},"CountResponse":{"examples":[{"count":5}],"properties":{"count":{"description":"The count of notifications matching the query.","type":"integer"}},"required":["count"],"type":"object"},"DiscardResult":{"examples":[{"discarded_at":"2021-01-01T00:00:00Z","id":"123"}],"properties":{"discarded_at":{"description":"The timestamp when the token was discarded.","type":"string"},"id":{"description":"The unique identifier for the discarded token.","type":"string"}},"type":"object"},"ExpoToken":{"examples":[{"created_at":"2021-01-01T00:00:00Z","device_token":"ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]","discarded_at":"2021-01-01T00:00:00Z","id":"123","updated_at":"2021-01-01T00:00:00Z"}],"properties":{"created_at":{"description":"The timestamp when the token was created.","format":"date-time","type":"string"},"device_token":{"description":"The Expo push token returned by the Expo client.","minLength":1,"type":"string"},"discarded_at":{"description":"The timestamp when the token was discarded, if applicable.","format":"date-time","type":["string","null"]},"id":{"description":"The unique identifier for the token.","type":"string"},"updated_at":{"description":"The timestamp when the token metadata last changed.","format":"date-time","type":["string","null"]}},"required":["created_at","device_token","id"],"type":"object"},"ExpoTokenCollection":{"examples":[{"data":[{"created_at":"2021-01-01T00:00:00Z","device_token":"ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]","discarded_at":"2021-01-01T00:00:00Z","id":"123","updated_at":"2021-01-01T00:00:00Z"}],"links":{"first":"https://api.magicbell.com/v1/example","next":"https://api.magicbell.com/v1/example?page_next=abc","prev":null}}],"properties":{"data":{"items":{"$ref":"#/components/schemas/ExpoToken"},"type":"array"},"links":{"$ref":"#/components/schemas/Links"}},"type":"object"},"ExpoTokenPayload":{"$schema":"http://json-schema.org/draft-07/schema#","examples":[{"device_token":"ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]"}],"properties":{"device_token":{"description":"The Expo push token returned by the Expo client.","minLength":1,"type":"string"}},"required":["device_token"],"type":"object"},"FCMToken":{"examples":[{"created_at":"2021-01-01T00:00:00Z","device_token":"eH0fLhuiRj2Np7UQ-opXAm:APA91bGtC-wH4sgW1jWkMKIZf7FYkm_RTQb7Jid7DfSJnCgivGYoRzhLrGxpcIF6yPjmbzAr6CKF-6phZkBasFUUfZmfdgcqfA_ZlZdVk6pSnon3LGzMumCzEJE0zgWoo_RUmVUVJUAt","discarded_at":"2021-01-01T00:00:00Z","id":"123","installation_id":"development","updated_at":"2021-01-01T00:00:00Z"}],"properties":{"created_at":{"description":"The timestamp when the token was created.","format":"date-time","type":"string"},"device_token":{"description":"The Firebase Cloud Messaging device registration token to associate with the user.","minLength":64,"type":"string"},"discarded_at":{"description":"The timestamp when the token was discarded, if applicable.","format":"date-time","type":["string","null"]},"id":{"description":"The unique identifier for the token.","type":"string"},"updated_at":{"description":"The timestamp when the token metadata last changed.","format":"date-time","type":["string","null"]}},"required":["created_at","device_token","id"],"type":"object"},"FCMTokenCollection":{"examples":[{"data":[{"created_at":"2021-01-01T00:00:00Z","device_token":"eH0fLhuiRj2Np7UQ-opXAm:APA91bGtC-wH4sgW1jWkMKIZf7FYkm_RTQb7Jid7DfSJnCgivGYoRzhLrGxpcIF6yPjmbzAr6CKF-6phZkBasFUUfZmfdgcqfA_ZlZdVk6pSnon3LGzMumCzEJE0zgWoo_RUmVUVJUAt","discarded_at":"2021-01-01T00:00:00Z","id":"123","installation_id":"development","updated_at":"2021-01-01T00:00:00Z"}],"links":{"first":"https://api.magicbell.com/v1/example","next":"https://api.magicbell.com/v1/example?page_next=abc","prev":null}}],"properties":{"data":{"items":{"$ref":"#/components/schemas/FCMToken"},"type":"array"},"links":{"$ref":"#/components/schemas/Links"}},"type":"object"},"FCMTokenPayload":{"$schema":"http://json-schema.org/draft-07/schema#","examples":[{"device_token":"eH0fLhuiRj2Np7UQ-opXAm:APA91bGtC-wH4sgW1jWkMKIZf7FYkm_RTQb7Jid7DfSJnCgivGYoRzhLrGxpcIF6yPjmbzAr6CKF-6phZkBasFUUfZmfdgcqfA_ZlZdVk6pSnon3LGzMumCzEJE0zgWoo_RUmVUVJUAt","installation_id":"development"}],"properties":{"device_token":{"description":"The Firebase Cloud Messaging device registration token to associate with the user.","minLength":64,"type":"string"}},"required":["device_token"],"type":"object"},"InboxConfigPayload":{"$schema":"http://json-schema.org/draft-07/schema#","examples":[{"images":{"emptyInboxUrl":""},"locale":"de","theme":{"banner":{"backgroundColor":"#F8F5FF","fontSize":"14px","textColor":"#3A424D"},"dialog":{"accentColor":"#5225C1","backgroundColor":"#F5F5F5","textColor":"#313131"},"footer":{"backgroundColor":"#FFFFFF","borderRadius":"16px","fontFamily":"inherit","fontSize":"15px","textColor":"#5225C1"},"header":{"backgroundColor":"#FFFFFF","borderRadius":"16px","fontFamily":"inherit","fontSize":"15px","textColor":"#5225C1"},"icon":{"borderColor":"#EDEDEF","width":"24px"},"unseenBadge":{"backgroundColor":"#F80808"}}}],"properties":{"images":{"description":"Image overrides for assets used in the inbox UI.","minProperties":1,"properties":{"emptyInboxUrl":{"description":"URL for the illustration shown when the inbox is empty.","type":"string"}},"required":["emptyInboxUrl"],"type":["object","null"]},"locale":{"description":"Locale code (ISO language tag) used to localize built-in strings.","minLength":2,"type":["string","null"]},"theme":{"description":"Visual customization options for the hosted inbox widget.","minProperties":1,"properties":{"banner":{"description":"Top banner styling options.","properties":{"backgroundColor":{"description":"Banner background color.","type":"string"},"backgroundOpacity":{"description":"Opacity applied to the banner background.","type":"number"},"fontSize":{"description":"Font size for banner text.","type":"string"},"textColor":{"description":"Banner text color.","type":"string"}},"required":["fontSize","backgroundColor","textColor"],"type":"object"},"dialog":{"description":"Styling for confirmation and action dialogs.","properties":{"accentColor":{"description":"Accent color for dialog buttons and highlights.","type":"string"},"backgroundColor":{"description":"Dialog background color.","type":"string"},"textColor":{"description":"Dialog text color.","type":"string"}},"required":["backgroundColor","textColor","accentColor"],"type":"object"},"footer":{"description":"Footer styling for the inbox modal.","properties":{"backgroundColor":{"description":"Footer background color.","type":"string"},"borderRadius":{"description":"Border radius applied to the footer container.","type":"string"},"fontSize":{"description":"Font size used in the footer.","type":"string"},"textColor":{"description":"Footer text color.","type":"string"}},"required":["fontSize","backgroundColor","textColor","borderRadius"],"type":"object"},"header":{"description":"Header styling for the inbox modal.","properties":{"backgroundColor":{"description":"Header background color.","type":"string"},"borderRadius":{"description":"Border radius applied to the header container.","type":"string"},"fontFamily":{"description":"CSS font family for the header title.","type":"string"},"fontSize":{"description":"Font size used in the header.","type":"string"},"textColor":{"description":"Header text color.","type":"string"}},"required":["fontFamily","fontSize","backgroundColor","textColor","borderRadius"],"type":"object"},"icon":{"description":"Launcher icon styling overrides.","properties":{"borderColor":{"description":"CSS color used for the icon border.","type":"string"},"width":{"description":"Width of the launcher icon (any CSS length).","type":"string"}},"required":["borderColor","width"],"type":"object"},"notification":{"description":"Styling overrides for notification list items.","properties":{"default":{"description":"Base styles applied to every notification item.","properties":{"backgroundColor":{"description":"Background color for notifications in their default state.","type":"string"},"borderRadius":{"description":"Border radius applied to each notification card.","type":"string"},"fontFamily":{"description":"Font family for notification text.","type":"string"},"fontSize":{"description":"Font size for notification text.","type":"string"},"hover":{"description":"Styles applied when a notification is hovered.","properties":{"backgroundColor":{"description":"Background color on hover.","type":"string"}},"required":["backgroundColor"],"type":"object"},"margin":{"description":"CSS margin applied around each notification card.","type":"string"},"state":{"description":"Accent colors for notification state indicators.","properties":{"color":{"description":"Color used for the state indicator.","type":"string"}},"required":["color"],"type":"object"},"textColor":{"description":"Default text color for notifications.","type":"string"}},"required":["fontFamily","fontSize","textColor","borderRadius","backgroundColor","margin"],"type":"object"},"unread":{"description":"Overrides for unread notifications.","properties":{"backgroundColor":{"description":"Background color applied to unread notifications.","type":"string"},"hover":{"description":"Hover styles for unread notifications.","properties":{"backgroundColor":{"description":"Background color on hover for unread notifications.","type":"string"}},"required":["backgroundColor"],"type":"object"},"state":{"description":"State indicator styling for unread notifications.","properties":{"color":{"description":"Color for the unread state indicator.","type":"string"}},"required":["color"],"type":"object"},"textColor":{"description":"Text color used when a notification is unread.","type":"string"}},"required":["textColor","backgroundColor"],"type":"object"},"unseen":{"description":"Overrides for unseen notifications.","properties":{"backgroundColor":{"description":"Background color applied to unseen notifications.","type":"string"},"hover":{"description":"Hover styles for unseen notifications.","properties":{"backgroundColor":{"description":"Background color on hover for unseen notifications.","type":"string"}},"required":["backgroundColor"],"type":"object"},"state":{"description":"State indicator styling for unseen notifications.","properties":{"color":{"description":"Color for the unseen state indicator.","type":"string"}},"required":["color"],"type":"object"},"textColor":{"description":"Text color used when a notification is unseen.","type":"string"}},"required":["textColor","backgroundColor"],"type":"object"}},"required":["default","unseen","unread"],"type":"object"},"unseenBadge":{"description":"Badge styling for unseen notification counts.","properties":{"backgroundColor":{"description":"Badge background color.","type":"string"}},"required":["backgroundColor"],"type":"object"}},"type":["object","null"]}},"required":["theme","locale","images"],"type":"object"},"InboxToken":{"$schema":"http://json-schema.org/draft-07/schema#","examples":[{"token":"eH0fLhuiRj2Np7UQ-opXAm:APA91bGtC-wH4sgW1jWkMKIZf7FYkm_RTQb7Jid7DfSJnCgivGYoRzhLrGxpcIF6yPjmbzAr6CKF-6phZkBasFUUfZmfdgcqfA_ZlZdVk6pSnon3LGzMumCzEJE0zgWoo_RUmVUVJUAt"}],"properties":{"connection_id":{"description":"Realtime connection ID to restrict delivery to a specific Ably connection.","type":["string","null"]},"token":{"description":"The in-app inbox token generated for this user.","minLength":64,"type":"string"}},"required":["token"],"type":"object"},"InboxTokenResponse":{"examples":[{"created_at":"2021-01-01T00:00:00Z","discarded_at":"2021-01-01T00:00:00Z","id":"123","token":"eH0fLhuiRj2Np7UQ-opXAm:APA91bGtC-wH4sgW1jWkMKIZf7FYkm_RTQb7Jid7DfSJnCgivGYoRzhLrGxpcIF6yPjmbzAr6CKF-6phZkBasFUUfZmfdgcqfA_ZlZdVk6pSnon3LGzMumCzEJE0zgWoo_RUmVUVJUAt","updated_at":"2021-01-01T00:00:00Z"}],"properties":{"connection_id":{"description":"Realtime connection ID to restrict delivery to a specific Ably connection.","type":["string","null"]},"created_at":{"description":"The timestamp when the token was created.","format":"date-time","type":"string"},"discarded_at":{"description":"The timestamp when the token was discarded, if applicable.","format":"date-time","type":["string","null"]},"id":{"description":"The unique identifier for the token.","type":"string"},"token":{"description":"The in-app inbox token generated for this user.","minLength":64,"type":"string"},"updated_at":{"description":"The timestamp when the token metadata last changed.","format":"date-time","type":["string","null"]}},"required":["created_at","id","token"],"type":"object"},"InboxTokenResponseCollection":{"examples":[{"data":[{"created_at":"2021-01-01T00:00:00Z","discarded_at":"2021-01-01T00:00:00Z","id":"123","token":"eH0fLhuiRj2Np7UQ-opXAm:APA91bGtC-wH4sgW1jWkMKIZf7FYkm_RTQb7Jid7DfSJnCgivGYoRzhLrGxpcIF6yPjmbzAr6CKF-6phZkBasFUUfZmfdgcqfA_ZlZdVk6pSnon3LGzMumCzEJE0zgWoo_RUmVUVJUAt","updated_at":"2021-01-01T00:00:00Z"}],"links":{"first":"https://api.magicbell.com/v1/example","next":"https://api.magicbell.com/v1/example?page_next=abc","prev":null}}],"properties":{"data":{"items":{"$ref":"#/components/schemas/InboxTokenResponse"},"type":"array"},"links":{"$ref":"#/components/schemas/Links"}},"type":"object"},"Links":{"properties":{"first":{"type":"string"},"next":{"type":["string","null"]},"prev":{"type":["string","null"]}},"type":"object"},"Notification":{"$schema":"http://json-schema.org/draft-07/schema#","examples":[{"aasm_state":"unseen","action_url":null,"archived_at":null,"category_id":null,"created_at":"2024-09-11T11:14:42.165Z","custom_attributes":{"key":"value","obj_key":{"one":"two"}},"discarded_at":null,"id":"4b6efd21-f0f6-4051-8922-cc8c90a3dc5d","in_app":true,"metadata":{},"notification_broadcast_id":"6a8b1e23-f54b-4c65-95b2-78f288d7f247","overrides":{},"project_id":7,"read_at":null,"seen_at":null,"title":"Example Notification","topic_id":null,"updated_at":"2024-09-11T11:14:42.165Z","user_id":"d4121424-097e-40b0-9cc8-357060d004b2"}],"properties":{"action_url":{"description":"The link associated with the notification.","maxLength":2048,"type":["null","string"]},"archived_at":{"description":"The timestamp when the notification was archived.","format":"date-time","type":["null","string"]},"category":{"description":"The category grouping for the notification.","maxLength":100,"type":["null","string"]},"content":{"description":"The body content of the notification.","maxLength":10485760,"type":["null","string"]},"created_at":{"description":"The timestamp when the notification was created.","format":"date-time","type":["string"]},"custom_attributes":{"description":"The custom data stored with the notification.","type":["null","object"]},"discarded_at":{"description":"The timestamp when the notification was discarded.","format":"date-time","type":["null","string"]},"id":{"description":"The unique identifier for the notification.","format":"uuid","type":"string"},"read_at":{"description":"The timestamp when the notification was marked as read.","format":"date-time","type":["null","string"]},"seen_at":{"description":"The timestamp when the notification was seen.","format":"date-time","type":["null","string"]},"sent_at":{"description":"The timestamp when the notification was sent.","format":"date-time","type":["null","string"]},"title":{"description":"The title that is displayed to recipients.","maxLength":255,"minLength":1,"type":"string"},"topic":{"description":"The topic for additional classification.","maxLength":100,"type":["null","string"]},"updated_at":{"description":"The timestamp when the notification was last updated.","format":"date-time","type":["string"]},"user_id":{"description":"The user that should receive the notification.","format":"uuid","type":"string"}},"required":["id","title","created_at","updated_at","user_id"],"type":"object"},"NotificationCollection":{"examples":[{"data":[{"aasm_state":"unseen","action_url":null,"archived_at":null,"category_id":null,"created_at":"2024-09-11T11:14:42.165Z","custom_attributes":{"key":"value","obj_key":{"one":"two"}},"discarded_at":null,"id":"4b6efd21-f0f6-4051-8922-cc8c90a3dc5d","in_app":true,"metadata":{},"notification_broadcast_id":"6a8b1e23-f54b-4c65-95b2-78f288d7f247","overrides":{},"project_id":7,"read_at":null,"seen_at":null,"title":"Example Notification","topic_id":null,"updated_at":"2024-09-11T11:14:42.165Z","user_id":"d4121424-097e-40b0-9cc8-357060d004b2"}],"links":{"first":"https://api.magicbell.com/v1/example","next":"https://api.magicbell.com/v1/example?page_next=abc","prev":null}}],"properties":{"data":{"items":{"$ref":"#/components/schemas/Notification"},"type":"array"},"links":{"$ref":"#/components/schemas/Links"}},"type":"object"},"SlackFinishInstallResponse":{"$schema":"http://json-schema.org/draft-07/schema#","examples":[{"app_id":"12345678901","code":"string","redirect_url":"string"}],"properties":{"app_id":{"description":"The app ID of the Slack app that was originally configured at the project-level.","type":"string"},"code":{"description":"The code that was returned from the OAuth flow, and found in the query string of the redirect URL.","type":"string"},"redirect_url":{"type":"string"}},"required":["app_id","code"],"type":"object"},"SlackInstallation":{"$schema":"http://json-schema.org/draft-07/schema#","examples":[{"access_token":"xoxb-123456789012-1234567890123-12345678901234567890abcdef123456","app_id":"A12345678","authed_user":{"id":"U12345678","scope":"identify,commands"},"bot_user_id":"U12345678","enterprise_id":"E12345678","enterprise_name":"Enterprise Grid, Inc.","id":"A12345678-T123","incoming_webhook":{"channel":"C12345678","channel_id":"C12345678","configuration_url":"https://teamname.slack.com/services/B12345678","url":"https://hooks.slack.com/services/T12345678/B12345678/123456789012345678901234"},"scope":"identify,commands,bot","team":{"id":"T123","name":"Team Installing Your App"},"team_id":"T12345678","team_name":"Team Installing Your App"}],"properties":{"access_token":{"description":"Bot token returned from the Slack OAuth exchange.","type":"string"},"app_id":{"description":"Slack app identifier for the installed app.","type":"string"},"authed_user":{"properties":{"access_token":{"description":"User token returned from the OAuth exchange.","type":"string"},"expires_in":{"description":"Seconds until the user token expires.","type":"integer"},"id":{"description":"Slack user ID for the installer.","type":"string"},"refresh_token":{"description":"Refresh token for the authed user.","type":"string"},"scope":{"description":"Space-delimited OAuth scopes granted to the user token.","type":"string"},"token_type":{"description":"Token type value provided by Slack.","type":"string"}},"required":["id"],"type":"object"},"bot_user_id":{"description":"Slack user ID of the installed bot.","type":"string"},"enterprise":{"properties":{"id":{"description":"Enterprise grid identifier.","type":"string"},"name":{"description":"Enterprise grid name.","type":"string"}},"required":["name","id"],"type":"object"},"expires_in":{"description":"Seconds until the bot access token expires.","type":"integer"},"id":{"description":"Unique identifier MagicBell assigns to the Slack installation.","pattern":"^[A-Z0-9]+-.*$","type":"string"},"incoming_webhook":{"properties":{"channel":{"description":"Human readable name for the webhook channel.","type":"string"},"configuration_url":{"description":"URL users can visit to manage the webhook.","type":"string"},"url":{"description":"Webhook URL that Slack posts events to.","type":"string"}},"required":["channel","configuration_url","url"],"type":"object"},"is_enterprise_install":{"description":"Indicates whether the installation occurred on an enterprise grid.","type":"boolean"},"refresh_token":{"description":"Refresh token for regenerating the bot access token.","type":"string"},"scope":{"description":"Space-delimited OAuth scopes granted to the bot token.","type":"string"},"team":{"properties":{"id":{"description":"Workspace ID where the app was installed.","type":"string"},"name":{"description":"Workspace name where the app was installed.","type":"string"}},"required":["id"],"type":"object"},"token_type":{"description":"Type of bot token returned by Slack.","type":"string"}},"required":["access_token","authed_user","team","app_id"],"type":"object"},"SlackStartInstall":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"examples":[{"app_id":"12345678901","auth_url":"https://example.com/auth","extra_scopes":["scope1","scope2"],"redirect_url":"https://example.com/redirect"}],"properties":{"app_id":{"description":"Slack app ID that the installation flow should use.","type":"string"},"auth_url":{"description":"Optional override for the authorization URL returned to the client.","type":"string"},"extra_scopes":{"description":"Additional OAuth scopes to request during installation.","items":{"type":"string"},"type":"array"},"redirect_url":{"description":"Custom redirect URL to use after OAuth completes.","type":"string"}},"required":["app_id"],"type":"object"},"SlackStartInstallResponseContent":{"examples":[{"app_id":"app-id","auth_url":"https://slack.com/oauth/v2/authorize?client_id=app-id\u0026scope=channels:read,chat:write","scopes":["channels:read","chat:write"]}],"properties":{"app_id":{"type":"string"},"auth_url":{"type":"string"},"scopes":{"items":{"type":"string"},"type":"array"}},"type":"object"},"SlackToken":{"examples":[{"created_at":"2021-01-01T00:00:00Z","discarded_at":"2021-01-01T00:00:00Z","id":"123","updated_at":"2021-01-01T00:00:00Z","webhook":{"url":"https://example.com/webhook"}}],"properties":{"created_at":{"description":"The timestamp when the token was created.","format":"date-time","type":"string"},"discarded_at":{"description":"The timestamp when the token was discarded, if applicable.","format":"date-time","type":["string","null"]},"id":{"description":"The unique identifier for the token.","type":"string"},"oauth":{"properties":{"channel_id":{"description":"The ID of the Slack channel this installation is associated with","type":"string"},"installation_id":{"description":"A unique identifier for this Slack workspace installation","type":"string"},"scope":{"description":"The OAuth scope granted during installation","type":"string"}},"required":["channel_id","installation_id"],"type":"object"},"updated_at":{"description":"The timestamp when the token metadata last changed.","format":"date-time","type":["string","null"]},"webhook":{"description":"Obtained directly from the incoming_webhook object in the installation response from the Slack API.","properties":{"url":{"description":"The URL for the incoming webhook from Slack","format":"uri","minLength":1,"type":"string"}},"required":["url"],"type":"object"}},"required":["created_at","id"],"type":"object"},"SlackTokenCollection":{"examples":[{"data":[{"created_at":"2021-01-01T00:00:00Z","discarded_at":"2021-01-01T00:00:00Z","id":"123","updated_at":"2021-01-01T00:00:00Z","webhook":{"url":"https://example.com/webhook"}}],"links":{"first":"https://api.magicbell.com/v1/example","next":"https://api.magicbell.com/v1/example?page_next=abc","prev":null}}],"properties":{"data":{"items":{"$ref":"#/components/schemas/SlackToken"},"type":"array"},"links":{"$ref":"#/components/schemas/Links"}},"type":"object"},"SlackTokenPayload":{"$id":"slackToken","$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"examples":[{"webhook":{"url":"https://example.com/webhook"}}],"minProperties":1,"properties":{"oauth":{"properties":{"channel_id":{"description":"The ID of the Slack channel this installation is associated with","type":"string"},"installation_id":{"description":"A unique identifier for this Slack workspace installation","type":"string"},"scope":{"description":"The OAuth scope granted during installation","type":"string"}},"required":["channel_id","installation_id"],"type":"object"},"webhook":{"description":"Obtained directly from the incoming_webhook object in the installation response from the Slack API.","properties":{"url":{"description":"The URL for the incoming webhook from Slack","format":"uri","minLength":1,"type":"string"}},"required":["url"],"type":"object"}},"type":"object"},"TeamsToken":{"examples":[{"created_at":"2021-01-01T00:00:00Z","discarded_at":"2021-01-01T00:00:00Z","id":"123","updated_at":"2021-01-01T00:00:00Z"}],"properties":{"created_at":{"description":"The timestamp when the token was created.","format":"date-time","type":"string"},"discarded_at":{"description":"The timestamp when the token was discarded, if applicable.","format":"date-time","type":["string","null"]},"id":{"description":"The unique identifier for the token.","type":"string"},"updated_at":{"description":"The timestamp when the token metadata last changed.","format":"date-time","type":["string","null"]},"webhook":{"properties":{"url":{"type":"string"}},"type":"object"}},"required":["created_at","id"],"type":"object"},"TeamsTokenCollection":{"examples":[{"data":[{"created_at":"2021-01-01T00:00:00Z","discarded_at":"2021-01-01T00:00:00Z","id":"123","updated_at":"2021-01-01T00:00:00Z"}],"links":{"first":"https://api.magicbell.com/v1/example","next":"https://api.magicbell.com/v1/example?page_next=abc","prev":null}}],"properties":{"data":{"items":{"$ref":"#/components/schemas/TeamsToken"},"type":"array"},"links":{"$ref":"#/components/schemas/Links"}},"type":"object"},"TeamsTokenPayload":{"examples":[{}],"properties":{"webhook":{"properties":{"url":{"type":"string"}},"type":"object"}},"type":"object"},"UserPreferences":{"$id":"https://magicbell.com/schemas/delivery.json","$schema":"http://json-schema.org/draft-07/schema#","examples":[{"categories":[{"channels":[{"enabled":true,"label":"Email","name":"email"}],"key":"category_1","label":"Category 1"}]}],"properties":{"categories":{"items":{"properties":{"channels":{"items":{"properties":{"enabled":{"type":"boolean"},"name":{"type":"string"}},"type":"object"},"type":"array"},"key":{"maxLength":255,"pattern":"^[A-Za-z0-9_\\.\\-/:]+$","type":"string"},"label":{"maxLength":255,"type":["string","null"]}},"type":"object"},"type":"array"}},"type":"object"},"WebPushStartInstallationResponse":{"$schema":"http://json-schema.org/draft-07/schema#","examples":[{"auth_token":"eyGhb...GA2Bw","public_key":"BHaJd...gRHDk"}],"properties":{"auth_token":{"description":"Auth secret returned from PushSubscription.getKey('auth').","minLength":8,"type":"string"},"public_key":{"description":"VAPID public key generated for this web push installation.","maxLength":128,"minLength":8,"type":"string"}},"required":["public_key","auth_token"],"type":"object"},"WebPushToken":{"examples":[{"created_at":"2021-01-01T00:00:00Z","discarded_at":"2021-01-01T00:00:00Z","endpoint":"https://fcm.googleapis.com/fcm/send/fZhR0fsr0zw:APA91bE4pM-qo1KBJDU_Zp2N9nDP-Jdmwugm-v4KNL_NlJvYCrJeJUzPXmMyAXqAE0m6BFOrkSWT0ArGbUjEEpxQEYZLado8JeW1PZA5CHB8R6C7HT6-MD6Qs8ZaCn8_ffLGGU7WuvtN","id":"123","keys":{"auth":"GoIO2ulhtQuyBM64lZuFuw","p256dh":"BICAe4KtLhhPNFvynlqMRxjvpRnr94881QeuTCr8kCwJf-Fssj3FLIlnfFMjj7T1yNg5l6cn14350323_NSGZh0"},"updated_at":"2021-01-01T00:00:00Z"}],"properties":{"created_at":{"description":"The timestamp when the token was created.","format":"date-time","type":"string"},"discarded_at":{"description":"The timestamp when the token was discarded, if applicable.","format":"date-time","type":["string","null"]},"endpoint":{"description":"The push subscription URL obtained from PushSubscription.endpoint after calling registration.pushManager.subscribe(). This is the unique URL for this device that push messages will be sent to.","format":"uri","type":"string"},"id":{"description":"The unique identifier for the token.","type":"string"},"keys":{"description":"The encryption keys from the PushSubscription.getKey() method, needed to encrypt push messages for this subscription.","properties":{"auth":{"contentEncoding":"base64","description":"The authentication secret obtained from PushSubscription.getKey('auth'). Used to encrypt push messages for this subscription.","type":"string"},"p256dh":{"contentEncoding":"base64","description":"The P-256 ECDH public key obtained from PushSubscription.getKey('p256dh'). Used to encrypt push messages for this subscription.","type":"string"}},"required":["p256dh","auth"],"type":"object"},"updated_at":{"description":"The timestamp when the token metadata last changed.","format":"date-time","type":["string","null"]}},"required":["created_at","endpoint","id","keys"],"type":"object"},"WebPushTokenCollection":{"examples":[{"data":[{"created_at":"2021-01-01T00:00:00Z","discarded_at":"2021-01-01T00:00:00Z","endpoint":"https://fcm.googleapis.com/fcm/send/fZhR0fsr0zw:APA91bE4pM-qo1KBJDU_Zp2N9nDP-Jdmwugm-v4KNL_NlJvYCrJeJUzPXmMyAXqAE0m6BFOrkSWT0ArGbUjEEpxQEYZLado8JeW1PZA5CHB8R6C7HT6-MD6Qs8ZaCn8_ffLGGU7WuvtN","id":"123","keys":{"auth":"GoIO2ulhtQuyBM64lZuFuw","p256dh":"BICAe4KtLhhPNFvynlqMRxjvpRnr94881QeuTCr8kCwJf-Fssj3FLIlnfFMjj7T1yNg5l6cn14350323_NSGZh0"},"updated_at":"2021-01-01T00:00:00Z"}],"links":{"first":"https://api.magicbell.com/v1/example","next":"https://api.magicbell.com/v1/example?page_next=abc","prev":null}}],"properties":{"data":{"items":{"$ref":"#/components/schemas/WebPushToken"},"type":"array"},"links":{"$ref":"#/components/schemas/Links"}},"type":"object"},"WebPushTokenPayload":{"$schema":"http://json-schema.org/draft-07/schema#","examples":[{"endpoint":"https://fcm.googleapis.com/fcm/send/fZhR0fsr0zw:APA91bE4pM-qo1KBJDU_Zp2N9nDP-Jdmwugm-v4KNL_NlJvYCrJeJUzPXmMyAXqAE0m6BFOrkSWT0ArGbUjEEpxQEYZLado8JeW1PZA5CHB8R6C7HT6-MD6Qs8ZaCn8_ffLGGU7WuvtN","keys":{"auth":"GoIO2ulhtQuyBM64lZuFuw","p256dh":"BICAe4KtLhhPNFvynlqMRxjvpRnr94881QeuTCr8kCwJf-Fssj3FLIlnfFMjj7T1yNg5l6cn14350323_NSGZh0"}}],"properties":{"endpoint":{"description":"The push subscription URL obtained from PushSubscription.endpoint after calling registration.pushManager.subscribe(). This is the unique URL for this device that push messages will be sent to.","format":"uri","type":"string"},"keys":{"description":"The encryption keys from the PushSubscription.getKey() method, needed to encrypt push messages for this subscription.","properties":{"auth":{"contentEncoding":"base64","description":"The authentication secret obtained from PushSubscription.getKey('auth'). Used to encrypt push messages for this subscription.","type":"string"},"p256dh":{"contentEncoding":"base64","description":"The P-256 ECDH public key obtained from PushSubscription.getKey('p256dh'). Used to encrypt push messages for this subscription.","type":"string"}},"required":["p256dh","auth"],"type":"object"}},"required":["endpoint","keys"],"type":"object"}}},"tags":[{"name":"apns"},{"name":"broadcasts"},{"name":"channels"},{"name":"expo"},{"name":"fcm"},{"name":"in_app"},{"name":"inbox"},{"name":"integrations"},{"name":"magicbell_slackbot"},{"name":"mobile_push"},{"name":"slack"},{"name":"teams"},{"name":"web_push"}]}